我正在尝试在 Mac OS X El Capitan 上使用 virtualenv
创建一个虚拟环境。 I have installed Python 2.7.11 with brew
, which includes pip
, wheel
and setuptools
by default.
然而,当我按照 文档 或任何其他资源中的说明尝试安装 virtualenv
时,我遇到了几个问题:
virtualenv
executable is not placed in/usr/local/bin
afterpip
makes its job, so I need toln -s
it by hand (it may indicate,这一步安装有问题)。- After I run
virtualenv venv
, it creates new environment, catches Python 2.7.11 frombrew
-installation, but: _there is nopip
insidebin
文件夹_。 That means, that if I trywhich pip
, havingvenv
activated, it returns a global position ofpip
—/usr/local/bin/pip
, not/path/to/venv/bin/pip
。
As a consequence, installing packages inside venv
uses global pip
and installs them to a global sites-packages
, not that inside venv
, and it’s与环境应该做的完全相反。
您能否建议可能出了什么问题以及如何解决?
编辑:值得一提的是,我以前在我的计算机上安装了其他版本的 Python,我最近删除了它,如 本答案 中所述。也许它会导致问题,需要进行更彻底的清洁。
原文由 mikeonly 发布,翻译遵循 CC BY-SA 4.0 许可协议
尝试删除或重命名主目录中的 .pydistutils.cfg 文件,例如重命名为
mv ~/.pydistutils.cfg ~/oldpydistutils.cfg
我在这里给出了一个详细的答案来帮助其他人,但最初的功劳归于 这个答案。如果您知道 .pydistutils.cfg 中具体是什么导致了问题,请告诉我!
我遇到了同样的问题:我的虚拟环境是在没有 pip 本地副本的情况下创建的,尽管它们有 python 的本地副本。这意味着从安装到全局包位置的虚拟环境中使用
$ pip
,并且对环境的 python 不可见。我如何在我的机器上诊断这个:
$ virtualenv env
$ source env/bin/activate
(env)$ which python
输出/Users/<username>/env/bin/python
(如预期)(env)$ which pip
输出/usr/local/bin/pip
(不期望)要检查我们的包去了哪里,我们可以尝试在虚拟环境中安装一个包:
(env)$ pip install HTTPServer
成功(env)$ python -m HTTPServer
失败并出现错误/Users/emunsing/env/bin/python: No module named HTTPServer
(env)$ pip install HTTPServer
生成Requirement already satisfied (use --upgrade to upgrade): HTTPServer in /usr/local/lib/python2.7/site-packages
仔细检查,我们发现环境的 /bin 文件夹中没有 Pip:
$ ls env/bin activate activate.fish python python2 activate.csh activate_this.py python-config python2.7
所以当系统找到本地 python 版本时,它找不到本地 pip 来使用并遍历 $PATH。它最终使用来自 /usr/local/bin 的 pip,让我无法在本地将软件包安装到虚拟环境。
这是我尝试过的: - 重新安装 python
brew uninstall python
然后是brew upgrade
和brew install python --build-from-source
中描述的使用 p-ip-py- 安装命令的文档这是我排除的: - 我没有使用
sudo pip ...
这在另一个问题中引起了类似的问题, 并且在这个 Python/pip 安装的任何时候都没有这样做 - 我的虚拟环境没有显示pip 的本地安装,就像这些类似问题中的情况一样: 这个适用于 Windows , 这个适用于 Mac OS X。最终,我发现删除
~/.pydistutils.cfg
文件解决了问题,允许拥有自己本地 pip 的全新虚拟环境。我的~/.pydistutils.cfg
文件的内容是:简单地重命名
~/.pydistutils.cfg
文件似乎解决了这个问题:虽然这个文件是由自制软件安装创建的,但这个文件中的 一些设置可能与 virtualenv 不兼容。虽然删除此文件对我的系统没有任何不良影响,但在使用 pip 将软件包安装到全局环境时,您可能需要使用--user
标志(例如$ pip install --user HTTPServer
)。如果您想根据自己的需要对其进行定制,这里有更多 关于 .pydistutils.cfg 的详细信息。