我正在尝试导入“枚举”,但是出现导入错误,提示它找不到它。 但是就在那里。
(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
>>>
有什么想法吗? 如果有帮助,我正在.virtual环境中工作。
答案 0 :(得分:0)
”如果您直接运行脚本或 virtualenv的bin /目录中的python解释器 (例如path / to / ENV / bin / pip或/path/to/ENV/bin/python-script.py),然后是sys.path 会自动设置为使用与 virtualenv”
因此,如果您运行,请为您的virtualenv的python可执行文件设置一个显式路径:
sudo /path/to/ENV/bin/python selective_streams.py
然后,您将使用sudo特权运行virtualenv的Python。
但是有一个caveat:
...与激活脚本不同,环境变量PATH和 VIRTUAL_ENV将不会被修改。这意味着如果您的Python脚本使用 例如子进程来运行另一个Python脚本(例如,通过#!/ usr / bin / env python shebang行)第二个脚本可能无法使用相同的Python执行 作为第一个二进制文件,也没有可用的相同库。为了避免这种情况 发生您的第一个脚本将需要修改环境变量 与激活脚本相同,在第二个脚本之前 被执行。