virtualenv使用不正确的sys.path

时间:2015-04-09 02:56:10

标签: python ubuntu virtualenv sys.path

刚才事情很好。我不知道我做了什么来惹恼virtualenv,但现在它的行为非常奇怪。任何帮助表示赞赏。

制作virtualenv时,我使用此命令:

virtualenv -p /usr/bin/python3 venv

现在我看到我使用pip install package安装的软件包没有被python加载。它们通过pip正确安装到venv / lib / python3.4 / site-packages目录中,但是我的virtualenv中的python没有查看该目录中的包。

Python中的

import sys
sys.path
['', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages']

这是错的!它使用了错误的路径,至少应该包括

/myhomedir/venv/lib/python3.4/site-packages

所以我可以导入我的包。

事实上,在Python中打开了一个virtualenv:

import sys
sys.path.append("/myhomedir/venv/lib/python3.4/site-packages")
import package

作品!

但我不希望每次使用Python时都手动附加此路径。我做了一些让sys.path非常生气的事情,我不知道那是什么。

我只是sudo apt-get updated和sudo apt-get升级以确保它不是冲突......没有骰子。

可能相关:

我注意到我的virtualenv命令输出以下行:

Using base prefix '/usr'

我不记得以前发生过这种情况。但是,即使我执行virtualenv venv,(没有指定Python版本,并且没有出现输出),我的sys.path仍然是错误的,并且不会加载包。

有人想过吗?非常感谢帮助。

1 个答案:

答案 0 :(得分:15)

解决了问题...如果其他人有同样的问题,发布结果。 PICNIC最高程度的错误。

在我的.bashrc文件中,我有一个别名python=/usr/bin/python3

当我的virtualenv尝试执行python时,它正在重新路由到/ usr / bin而不是使用它的内部python。