我使用VirtualEnv创建了一个没有系统站点包的python2环境,如下所示:
virtualenv -p /usr/bin/python2.7 --no-site-packages ENV2.7
我想在这种环境下安装软件包。 但是,我发现我的python代码仍然试图从这个环境中寻找包。
例如,在激活此env之后,我使用了:
pip install matplotlib
在我的demo.py中,有
import matplotlib
但是这引发了一个错误,并且找不到这个包 但是,当我在终端中使用python并输入交互式python时,导入matplotlib不会引发错误。 然后我启动了另一个终端,并尝试通过pip3:
将此软件包安装到环境之外pip3 install matplotlib
原来我的demo.py运行良好。
有什么想法吗?非常感谢!
答案 0 :(得分:0)
听起来你的virtualenv pip版本可能正在使用pip3而不是pip2:
确保您在项目中使用正确的python版本,并在virtualenv中使用相同版本的pip 。 (请注意,您使用上面的pip
一次,然后在virtualenv之外使用pip3
。)
从virtualenv中查看你的pip版本:
workon (your env name)
which pip
pip -V
输出应该类似于:
$ which pip
/home/yourname/.virtualenvs/testenv/bin/pip
$ pip -V
pip 9.0.1 from /home/yourname/.virtualenvs/testenv/local/lib/python2.7/site-packages (python 2.7)
它应该告诉你你在virtualenv中使用了pip,以及正确的python版本。
如果看起来正确,请安装您的包。
pip install (whatever)
检查它们是否已安装pip freeze
。
运行您的项目。 :)