在OS X Mavericks上安装pip失败,错误:/usr/local/bin/pip: 没有那个文件或目录
我正在使用OSX自带的Python 2.7.5版本。
我尝试用sudo easy_install pip 和 python get-pip.py 来安装pip。
当我用easy_install安装pip时,出现了以下错误:
Processing pip
Running setup.py -q bdist_egg --dist-dir /Users/XXXX/pip/egg-dist-tmp-VtRwku
warning: no files found matching 'pip/cacert.pem'
warning: no files found matching '*.html' under directory 'docs'
warning: no previously-included files matching '*.rst' found under directory 'docs/_build'
no previously-included directories found matching 'docs/_build/_sources'
no previously-included directories found matching 'tasks'
pip 1.6.dev1 is already the active version in easy-install.pth
Installing pip script to /usr/local/bin
error: /usr/local/bin/pip: No such file or directory
当我用get-pip.py安装pip时,
Requirement already up-to-date: pip in /Library/Python/2.7/site-packages/pip-1.6.dev1-py2.7.egg
- 我输入pip help时什么都没有显示。
3 个回答
如果你遇到错误信息:/usr/local/bin/pip: No such file or directory
,而且pip
已经安装好了,可以按照以下步骤来解决这个问题:
- 运行命令
which pip
。这个命令会告诉你pip
的安装位置,比如:/usr/local/bin
- 然后把
pip
文件复制到你想要的位置
在这里,
cp /usr/local/bin /usr/local/bin/pip
这样就解决了我的问题。
错误信息,特别是评论中提到的 Cellar
,说明你是通过 Homebrew 安装了另一个 Python 版本。
可能只需把 /usr/local/bin/pip
改个名字,就能解决眼前的问题。不过我建议你不要完全删除它,至少在你搞清楚具体问题之前。
更详细地说,要使用系统自带的 Python,你需要撤销 Homebrew 安装第二个 Python 时所做的更改。首先,你需要取消在 .bashrc
和其他地方设置的所有变量,这些都是 Homebrew 安装时添加的。
如果在 /usr/local/bin
里有指向已经不存在的命令的符号链接,你需要把它们删除(需要管理员权限)。这说明之前的卸载不干净;下次记得按照 Homebrew 的说明来卸载它和你安装的包。
更详细地说,Homebrew 可能做了类似这样的操作:
ln -s /usr/local/Cellar/something/something/python-2.7.3 /usr/local/bin/python
如果 /usr/local/Cellar/something/something
现在不存在了,试图通过符号链接在那写东西显然会失败。这正是 pip
安装程序在安装结束时试图做的事情。
如果你已经永久删除了 Homebrew,可以编辑 .bashrc
,把 Homebrew 所需的更改恢复。某些设置可能在你当前运行的终端中仍然有效,直到下次重启;如果你想解决这些问题,可以继续往下看。
要临时覆盖这些设置,你可以 unset
你的 PYTHONPATH
,这样就能恢复到系统默认的行为。如果 /usr/local/bin
中的命令覆盖了系统默认命令,你可以通过简单地把 /usr/bin
放在前面来临时设置你的 PATH
,这样就会优先使用系统的命令(这只是个临时的解决办法);
PATH=/usr/bin:$PATH
这些命令适用于 Bash,如果你用的是其他终端,请相应调整。
@ mirra.p
问题可能是你电脑上安装了两个不同位置的 Python 2 版本,而其中一个版本的 pip(Python 的包管理工具)不小心被删除了。所以当你尝试为一个版本安装 pip 时,系统会告诉你在另一个位置已经有一个 pip 安装了,而且 /usr/local/bin 文件夹里也缺少用来安装 pip 的文件。
已经安装的 pip 文件位置是:
Library/Python/2.7/site-packages/pip-1.6.dev1-py2.7.egg
我刚刚解决了这个问题,所以我会尽量用简单的方式来解释,让初学者也能理解。
你可以把已经安装的 pip 文件复制到缺少它的地方,而不是通过命令重新安装,因为命令会检测到已经安装的 pip。
解决方法非常简单:
在 Ubuntu 的终端(命令提示符)中运行以下命令,来获取已经安装的 pip 文件的位置:
which pip
cp <which pip 提供的位置> <要复制 pip 文件的位置>
cp /Library/Python/2.7/site-packages/pip /usr/local/bin
我使用的是 mirra.p 问题中的位置。
希望这能帮到你。