使用pip3在virtualenv中安装软件包会导致软件包安装在全局站点软件包文件夹中,而不是安装在virtualenv文件夹中。下面是我如何在OS X Mavericks(10.9.1)上设置Python3和virtualenv的:
我使用自制软件安装了Python3:
ruby-e“$(curl-fsSLhttps://raw.github.com/Homebrew/homebrew/go/install)"
brew安装python3——使用brew openssl
更改了.bash_profile中的$PATH变量;添加了以下行:
导出路径=/usr/local/bin:$PATH
运行哪个python3返回/usr/local/bin/python3(重启shell后)
注意:哪个python3仍然返回/usr/bin/python。
使用pip3安装的virtualenv:
pip3安装virtualenv
接下来,创建一个新的virtualenv并激活它:
virtualenv testpy3-p python3
cd testpy3
源箱/激活
注意:如果我没有指定-p python3,那么virtualenv中的bin文件夹中将缺少pip。
运行which pip和which pip3都会返回virtualenv文件夹:
/Users/kristof/VirtualEnvs/testpy3/bin/pip3
现在,当我尝试在激活的virtualenv中使用pip安装例如Markdown时,pip将安装在全局站点包文件夹中,而不是virtualenv的站点包文件夹中
pip安装降价
运行pip列表返回:
降价(2.3.1)
pip(1.4.1)
设置工具(2.0.1)
virtualenv(1.11)
/Users/kristof/VirtualEnvs/testpy3/lib/python3.3/site包的内容:
\uuuu pycache__/
_马克里布/
easy_install.py
皮普/
pip-1.5.dist-info/
pkg_resources.py
设置工具/
setuptools-2.0.2.dist-info/
/usr/local/lib/python3.3/site包的内容:
<pre-mark-down.3.3/
__pycache__/
easy-install.pth
降价/
pip-1.4.1-py3.3.egg/
setuptools-2.0.1-py3.3.1
setuptools.pth
virtualenv-1.11-py3.3.egg-info/
虚拟的
虚拟支持/
如您所见,全局站点包文件夹包含Markdown,而virtualenv文件夹不包含Markdown
注意:我以前在不同的VM上安装过Python2和Python3(遵循这些说明),Python3也有同样的问题;不过,在基于Python2的virtualenv中安装软件包的工作是完美的
任何提示、提示……都将不胜感激
有趣的是你提到了这个,我也有同样的问题。我最终解决了这个问题,但我仍然不确定是什么原因造成的
尝试检查bin/pip和bin/activate脚本。在bin/pip中,查看shebang。对吗?如果没有,请更正它。然后在bin/activate中的第42行,检查您的虚拟路径是否正确。看起来像这样
VIRTUAL\u ENV=“/Users/me/path/to/VIRTUAL/environment”
如果错误,请更正它,停用,然后。bin/activate,如果我们共同的问题有相同的原因,它应该会起作用。如果还是不行,那你就走对了。我和你一样经历了同样的问题解决程序,哪个pip一遍又一遍地重复,跟踪堆栈跟踪,等等
绝对确保
/Users/kristof/VirtualEnvs/testpy3/bin/pip3
是您想要的,而不是指另一个类似名称的测试项目(我有这个问题,不知道它是如何开始的。我怀疑是同时运行多个VirtualNV)
如果这些都不起作用,一个暂时的解决办法可能是,正如乔·霍洛韦所说
只需使用完整路径运行virtualenv的pip(即,不依赖于搜索可执行路径),您甚至不需要激活环境。它会做正确的事情
也许不太理想,但它应该在紧要关头起作用
链接到我的原始问题:
VirtualEnv/Pip正在尝试全局安装软件包