你有一个错误的 $PYTHONPATH,它可能不包含 virtualenv 库的路径!
一旦你设置了 $PYTHONPATH,路径就只使用这里给出的路径,如果没有在 $PYTHONPATH 中明确定义,则不再考虑从你的 virtualenv 到库的隐式路径。
如果python单独工作,请先尝试。如果你得到类似的结果,它有一个错误的 PYTHONPATH。
激活你想要的 virtualenv 并运行:
$ python
Traceback (most recent call last):
File "/data/appl/mmtools/lib/python2.7/site-packages/site.py", line 74, in <module>
__boot()
File "/data/appl/mmtools/lib/python2.7/site-packages/site.py", line 2, in __boot
import sys, os, os.path
File "/data/appl/py27/lib64/python2.7/os.py", line 49, in <module>
import posixpath as path
ImportError: No module named posixpath
然后取消设置 $PYTHONPATH:
unset PYTHONPATH
现在再次尝试运行 python
Python 2.7.5 (default, Mar 26 2019, 22:13:06)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
如果你有同样的问题,你需要仔细检查 $PYTHONPATH。
请记住:如果您想在多个 virtualenv 之间切换,您必须始终通过添加/交换 virtualenv 的路径和您的包路径来相应地更新您的 $PYTHONPATH,因为激活另一个 virtualenv 时不会自动完成。
更好的方法是在你的 virtualenv 中使用“.pth”文件。
-
取消设置 $PYTHONPATH 或将其从您的登录名中删除(.bash_profile、.bashrc、...)
-
在你的 virtualenv 中创建一个文件,例如$VIRTUALENV/lib/python2.7/site-packages/mypackages.pth 每个包的路径一行一行,就像它们在 $PYTHONPATH 中一样:
/path-to-your-packages/...
-
运行 python,它应该可以正常启动并找到你的包
如果您对不同的 virtualenv 有不同的包版本,您可以在 '.pth' 文件中为每个 virtualenv 定义正确的路径,您不应该再定义也不需要 $PYTHONPATH。
激活另一个环境会自动找到正确的路径。