仅当我从另一个文件导入包时,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 而不是我的虚拟环境。
预先感谢您的帮助。
最佳答案
我通过更改 shebang 解决了这个问题。
在虚拟环境中你可以使用:
$(env) /usr/bin/env python
但在文件中,shebang 必须指向虚拟 python 的确切位置。就我而言:
#!/var/www/bin/python
希望对您有所帮助。
关于python - 在虚拟环境中,当我从文件导入包时 sys.path 是错误的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35035598/