只有从其他文件导入包时,sys.path才会更改。
在我的pyenv中:
$(env) python
>>> import sys
>>> print(sys.path)
['', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/var/www/lib/python3.4/site-packages']
在fileImport.py中(在我的虚拟环境中):
# fileImport.py
import sys
print(sys.path)
命令:
$(env) python fileImport.py
给了我同样好的结果!
但是当我尝试从anotherfile.py导入fileImport包时,如下所示:
#!/usr/bin/env python
# anotherfile.py
import fileImport
sys.path结果更改:
$(env) python anotherfile.py
['/var/www', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
我像这样安装pyenv:
$ sudo apt-get install python3.4-venv python3-dev
$ pyvenv-3.4 env
我不明白为什么从文件导入使用系统中的sys.path而不是虚拟环境。
提前感谢您的帮助。
答案 0 :(得分:1)
我通过改变shebang解决了这个问题。
在虚拟环境中,您可以使用:
WebApplicationInitializer
但是在一个文件中,shebang必须指向你的虚拟python的确切位置。就我而言:
$(env) /usr/bin/env python
我希望它会有所帮助。