virtualenv使用不正确的sys.path

Tom*_*m A 10 python ubuntu virtualenv sys.path

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

在制作virtualenv时,我使用以下命令:

virtualenv -p /usr/bin/python3 venv
Run Code Online (Sandbox Code Playgroud)

现在我看到我安装的软件包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']
Run Code Online (Sandbox Code Playgroud)

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

/myhomedir/venv/lib/python3.4/site-packages
Run Code Online (Sandbox Code Playgroud)

所以我可以导入我的包.

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

import sys
sys.path.append("/myhomedir/venv/lib/python3.4/site-packages")
import package
Run Code Online (Sandbox Code Playgroud)

作品!!

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

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

可能相关:

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

Using base prefix '/usr'
Run Code Online (Sandbox Code Playgroud)

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

任何想法?非常感谢帮助.

Tom*_*m A 17

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

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

好吧,当我的virtualenv试图执行python时,它重新路由到/ usr/bin而不是使用它的内部python.

  • 经过两天的搜索和问答,以解决此问题。谢谢! (2认同)