Python virtualenv不包括pip
我正试图在Mac OS X El Capitan上使用Python virtualenv不包括pip,python,pip,virtualenv,Python,Pip,Virtualenv,我正试图在Mac OS X El Capitan上使用virtualenv创建一个虚拟环境。我已经用brew安装了Python 2.7.11,默认情况下包括pip、wheel和setuptools Hovewer,当我尝试在中或从任何其他资源安装virtualenv以下说明时,我遇到了几个问题: pip完成其工作后,virtualenv可执行文件未放置在/usr/local/bin中,因此我需要手动ln-s它(这可能表明此步骤的安装有问题) 运行virtualenv venv后,它会创建新的环境
virtualenv
创建一个虚拟环境。我已经用brew
安装了Python 2.7.11,默认情况下包括pip
、wheel
和setuptools
Hovewer,当我尝试在中或从任何其他资源安装virtualenv
以下说明时,我遇到了几个问题:
pip
完成其工作后,virtualenv
可执行文件未放置在/usr/local/bin
中,因此我需要手动ln-s
它(这可能表明此步骤的安装有问题)李>
virtualenv venv
后,它会创建新的环境,从brew
-安装中捕获Python 2.7.11,但是:bin
文件夹中没有pip
。这意味着,如果我尝试哪个pip
,激活venv
,它将返回pip
-/usr/local/bin/pip
,而不是/path/to/venv/bin/pip
venv
内部安装软件包使用全局pip
,并将它们安装到全局站点软件包中,而不是安装在venv
内部,这与环境应该做的恰恰相反
你能告诉我哪里出了问题以及如何解决吗
编辑:值得一提的是,我曾经在我的计算机上安装过其他版本的Python,我最近删除了它。可能是它导致了问题,需要进行更彻底的清洁
pip
完成其工作后,virtualenv
可执行文件未放置在/usr/local/bin
中,因此我需要手动ln-s
它(这可能表明此步骤的安装有问题)
不要那样做。这只会隐藏错误,而不会解决问题。以下是如何调试此类问题的简短指南:
- 从python的
开始。您看到的第一个路径应该是/usr/local/bin/python
,如果不是,请检查path
变量
- 接下来,检查
哪个-a pip
。同样,第一条路径应该是/usr/local/bin/pip
。如果没有,请运行python-m ensurepip
并重新检查
pip install virtualenv
安装virtualenv
,然后检查which-a virtualenv
的输出。第一个路径应该是/usr/local/bin/virtualenv
,如果不是,请检查env | grep PYTHON
的输出是否有意外的环境变量virtualenv--version
的输出,确保您拥有最新版本尝试删除或重命名主目录中的.pydistutils.cfg文件,例如使用
mv~/.pydistutils.cfg~/oldpydistutils.cfg重命名
我在这里给出了一个详细的答案,以帮助其他人,但最初的功劳归于。如果您知道.pydistutils.cfg中的具体原因,请告诉我
我也遇到了同样的问题:我的虚拟环境创建时没有pip的本地副本,尽管它们有python的本地副本。这意味着在安装到全局包位置的虚拟环境中使用$pip
,并且对环境的python不可见
我是如何在我的机器上诊断的:
我使用$virtualenv env
使用$source env/bin/activate激活虚拟环境
选中的python位置:运行(env)$which python
,输出/Users//env/bin/python
(如预期)
选中的pip位置:运行(env)$哪个pip
,输出/usr/local/bin/pip
(不需要)
要检查软件包的去向,我们可以尝试在虚拟环境中安装软件包:
尝试安装一个软件包:(env)$pip install HTTPServer
,安装成功
尝试运行包:(env)$python-mhttpserver
,该包失败,出现错误/Users/emunsing/env/bin/python:没有名为HTTPServer的模块
若要仔细检查,请再次尝试安装:(env)$pip install HTTPServer
,它产生的要求已得到满足(使用--升级以升级):HTTPServer in/usr/local/lib/python2.7/站点包
仔细检查,我们发现环境的/bin文件夹中没有Pip:
$ls环境/垃圾箱
激活activate.fish python python2
activate.csh activate_this.python config python2.7
因此,当系统找到本地python版本时,它无法找到本地pip来使用并遍历$PATH。它最终使用了/usr/local/bin中的pip,使我无法在虚拟环境中本地安装软件包
以下是我尝试过的:
-重新安装pythonbrew卸载python
,然后进行brew升级
和brew安装python——从源代码构建
-安装pip
以下是我排除的情况:
-我没有使用sudopip…
,在这个Python/pip安装中也没有这样做过
-我的虚拟环境没有显示pip的本地安装,就像这些类似问题一样:
最终,我发现消除~/.pydistutils.cfg
文件解决了这个问题,允许新的虚拟环境具有自己的本地pip。我的~/.pydistutils.cfg
文件的内容是:
[global]
verbose=1
[install]
install-scripts=$HOME/bin
[easy_install]
install-scripts=$HOME/bin
简单地重命名~/.pydistutils.cfg
文件似乎可以解决问题:尽管此文件是由自制安装创建的。虽然删除此文件对我的系统没有任何不良影响,但您可能需要在