【发布时间】:2014-01-24 00:34:33
【问题描述】:
使用pip3 在virtualenv 中安装包会导致该包安装在全局站点包文件夹中,而不是安装在virtualenv 文件夹中。以下是我在 OS X Mavericks (10.9.1) 上设置 Python3 和 virtualenv 的方法:
我使用 Homebrew 安装了 Python3:
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
brew install python3 --with-brewed-openssl
更改了.bash_profile 中的$PATH 变量;添加以下行:
export PATH=/usr/local/bin:$PATH
运行which python3 返回/usr/local/bin/python3(在重新启动shell 之后)。
注意:which python3 仍然返回 /usr/bin/python。
使用pip3安装virtualenv:
pip3 install virtualenv
接下来,创建一个新的virtualenv 并激活它:
virtualenv testpy3 -p python3
cd testpy3
source bin/activate
注意:如果我不指定 -p python3,则 virtualenv 中的 bin 文件夹中将缺少 pip。
运行 which pip 和 which pip3 都返回 virtualenv 文件夹:
/Users/kristof/VirtualEnvs/testpy3/bin/pip3
现在,当我尝试安装时,例如在激活的 virtualenv 中使用 pip 进行 Markdown,pip 将安装在全局 site-packages 文件夹中,而不是 virtualenv 的 site-packages 文件夹中。
pip install markdown
运行pip list 返回:
Markdown (2.3.1)
pip (1.4.1)
setuptools (2.0.1)
virtualenv (1.11)
/Users/kristof/VirtualEnvs/testpy3/lib/python3.3/site-packages的内容:
__pycache__/
_markerlib/
easy_install.py
pip/
pip-1.5.dist-info/
pkg_resources.py
setuptools/
setuptools-2.0.2.dist-info/
/usr/local/lib/python3.3/site-packages的内容:
Markdown-2.3.1-py3.3.egg-info/
__pycache__/
easy-install.pth
markdown/
pip-1.4.1-py3.3.egg/
setuptools-2.0.1-py3.3.egg
setuptools.pth
virtualenv-1.11-py3.3.egg-info/
virtualenv.py
virtualenv_support/
如您所见,global site-packages 文件夹包含 Markdown,而 virtualenv 文件夹不包含。
注意:我之前在不同的 VM 上安装了 Python2 和 Python3(遵循these 指令)并且在 Python3 上遇到了同样的问题;不过,在基于 Python2 的 virtualenv 中安装包可以完美运行。
任何提示、提示……将不胜感激。
【问题讨论】:
-
pip 不会安装已经可用的包。您应该在其输出中看到“要求已经满足”。尝试安装您还没有的软件包。顺便说一句,pip3 可能使用非 brew python3(你如何安装
pip3?)。它本身可能并不坏,但如果是的话,你应该知道。 -
我之前没有安装 Markdown。全局包列表为空。不管我尝试什么包,我每次都可以重现这种行为。
-
关于 pip3:这是由自制软件和 Python3 一起安装的。
-
对我来说这也有帮助:stackoverflow.com/questions/14695278/… 仅供参考
标签: python macos virtualenv pip