Ошибка импорта для перечисления в Ubuntu с python 3.6

Я пытаюсь импортировать "enum", но получаю сообщение об ошибке импорта, говорящее, что он не может его найти. Но это есть.

(cvnano) joev2@joev2-desktop:~/pylibfreenect2$ sudo python 
selective_streams.py
Traceback (most recent call last):
File "selective_streams.py", line 8, in 
<module>
    from pylibfreenect2 import Freenect2, 
SyncMultiFrameListener
  File 
"/home/joev2/pylibfreenect2/pylibfreenect2/__i n it__.py", line 15, in 
<module>
   import enum
ImportError: No module named enum

но когда я это делаю, он показывает, что он там

(cvnano) joev2@joev2-desktop:~/pylibfreenect2$ python
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from enum import IntEnum
>>> 

Любые идеи? Я работаю в виртуальной среде, если это помогает.


person joebob    schedule 08.06.2019    source источник
comment
sudo python может вызывать версию Python, отличную от обычной python.   -  person unutbu    schedule 08.06.2019


Ответы (1)


Согласно документам virtualenv:

«Если вы напрямую запускаете скрипт или интерпретатор python из каталога bin/virtualenv (например, path/to/ENV/bin/pip или /path/to/ENV/bin/python-script.py), то sys.path автоматически быть настроен на использование библиотек Python, связанных с virtualenv"

Поэтому, если вы запустите, укажите явный путь к исполняемому файлу python вашего virtualenv:

sudo /path/to/ENV/bin/python selective_streams.py

затем вы запустите Python вашего virtualenv с привилегиями sudo.

Однако есть одно предостережение:

... в отличие от сценариев активации, переменные среды PATH и VIRTUAL_ENV не будут изменены. Это означает, что если ваш скрипт Python использует, например. подпроцесс для запуска другого скрипта Python (например, через строку #!/usr/bin/env python shebang), второй скрипт может не выполняться с тем же двоичным файлом Python, что и первый, и для него не должны быть доступны те же библиотеки. Чтобы этого не произошло, ваш первый сценарий должен будет изменить переменные среды таким же образом, как и сценарии активации, прежде чем будет выполнен второй сценарий.

person unutbu    schedule 08.06.2019