我使用 homebrew 安装了 python,但无法从 bash 调用 pip。我尝试修改 .bash_profile 以包含 /usr/local/bin/python 和 /usr local/share/python,但无济于事。
当我使用 bash 命令时:
find / -name 'pip'
我得到的唯一结果是:
/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip
/Users/Ivan/Library/Caches/pip
/Users/Ivan/Library/Logs/pip
/usr/local/Cellar/python/2.7.9/libexec/pip
/usr/local/Cellar/python/2.7.9/libexec/pip/pip
/usr/local/lib/python2.7/site-packages/pip
其中没有一个是可执行文件。
我不知道该将 $PATH 指向哪里,因为我找不到 pip 可执行文件。当我打开
/usr/local/lib/python2.7/site-packages/pip
或者
/usr/local/Cellar/python/2.7.9/libexec/pip/pip
我找到以下文件:
__init__.py commands operations
__init__.pyc compat pep425tags.py
__main__.py download.py pep425tags.pyc
__main__.pyc download.pyc req
_vendor exceptions.py status_codes.py
basecommand.py exceptions.pyc status_codes.pyc
basecommand.pyc index.py utils
baseparser.py index.pyc vcs
baseparser.pyc locations.py wheel.py
cmdoptions.py locations.pyc wheel.pyc
cmdoptions.pyc models
其中没有一个是可执行文件。
我将非常感谢任何比我更有经验的人的帮助。
编辑:我尝试了 Marco 建议的步骤:
以下是这些步骤的结果:
echo $PATH 显示几个目录: /usr/local/bin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/opt/X11/bin:/usr/local/mysql/bin
which -a python 返回:/usr/local/bin/python /usr/local/bin/python
对于 -a pip 什么也不会返回
- python 返回:/usr/local/bin/python
pip 没有返回任何内容
- ls -l $(which python) 返回单个目录:lrwxr-xr-x 1 Ivan admin 33 17 May 08:59 /usr/local/bin/python -> ../Cellar/python/2.7.9/bin/python
ls -l $(which pip) 返回几个,包括我在原始帖子中展示的 python 文件
答案1
一般homebrew
会安装一个formula
进入/usr/local/Cellar/formula
然后在 处放置一个链接/usr/local/bin/formula
。
要使用已安装的公式,请确保/usr/local/bin
在您的 中。输入以下命令$PATH
显示您的$PATH
echo $PATH
如果/usr/local/bin
您的 中没有$PATH
,请将此行放在文件末尾~/.profile
。
export PATH="/usr/local/bin:$PATH"
现在,pythons
输入以下命令检查你的 OSX 上找到了什么:
which -a python
应该在 处找到一条 python /usr/bin/
(Apple python),在 处找到一条 python ,在/usr/local/bin/
处找到一条 Homebrew python 。
which python
将显示哪个 python 在您的程序中首先被找到$PATH
并且将在您调用时执行python
。
如果你想知道可执行文件在哪里,请输入以下命令显示
ls -l $(which python)
它可能看起来像这样:lrwxr-xr-x 1 root wheel 68 7 Mai 13:22 python -> /usr/local/bin/python
这也同样有效pip
。
如果您展示这些步骤的结果,我们可能会更轻松地帮助您。
- 更新 -
您已/usr/local/bin/python
链接到/usr/local/Cellar/python/2.7.9/bin/python
.->brew install python
已起作用。
显示,如果pip
通过键入安装
brew list python | grep pip
你应该看到
/usr/local/Cellar/python/2.7.9/bin/pip
如果没有,请检查是否存在未完成的链接brew install
。告诉您类似这样的内容:
"Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local"
强制链接并覆盖所有冲突的文件:
brew link --overwrite python
列出所有将被删除的文件:
brew link --overwrite --dry-run python
** 没有标准的苹果/usr/bin/python
**
链接自/usr/local/Cellar/python/2.7.9/bin/python
至/usr/bin/python
ln -s /usr/local/Cellar/python/2.7.9/bin/python /usr/bin/python
对于所有以 开头的 Python 脚本来说,这都是必需的#!/usr/bin/python
。easy_install
如果没有链接,则尤其会失败。
现在,你可以运行
easy_install pip
希望你正在取得进步
答案2
如果 brew 正在管理你的 python 安装并且 pip 不再是符号链接(即你输入“which pip”但没有得到任何结果)请从你的主目录尝试执行以下操作:
brew unlink python && brew link python
不确定旧方法是否仍然有效(在我的计算机上不起作用)。
现在确认它确实指向你的 2.7 安装pip --version
(它将在目录输出中列出 python 主版本)。
答案3
这并不是对原始问题的真正回答,但如果有人最终来到这里,因为他们安装的 Homebrewpython/pip
不再工作(即python
指向系统 python 但pip
找不到),那么原因可能是最近(2017 年夏季)Homebrew 安装和链接 python 的方式发生了变化。
解决方案是将以下内容添加到~/.bash_profile
and/or 中~/.zshrc
:
export PATH="$(brew --prefix)/opt/python/libexec/bin:$PATH"
这将python
指向 brew 版本的 python 并为您提供。请参阅和pip
下的注意事项部分brew info python
https://github.com/Homebrew/homebrew-core/issues/15746了解更多信息
答案4
默认情况下,Homebrew 通过以下方式提供 pip:。brew install python
但是,这样你就会在 Mac 上安装两个 Python,你也可以通过以下方式安装:
sudo easy_install pip
要验证你的 Python 包中安装了哪些文件,请尝试:
$ brew list python
/usr/local/Cellar/python/2.7.9/bin/pip
/usr/local/Cellar/python/2.7.9/bin/pip2
/usr/local/Cellar/python/2.7.9/bin/pip2.7
...
应该包括pip
。
安装后,您应该通过以下方式对公式的安装文件进行符号链接:
brew link python
它应该创建正确的符号链接(例如/usr/local/bin/pip
指向你的Cellar/python/2.?.?/bin/pip
)
如果您有权限问题,您可以通过以下方式修复:
sudo chgrp -R admin /usr/local /Library/Caches/Homebrew
sudo chmod -R g+w /usr/local /Library/Caches/Homebrew
并确保您的用户属于管理员组(id -Gn $USER
)。
修复权限后,sudo
使用brew
命令时请勿使用。
然后再次重新链接:
brew unlink python && brew link python
测试空运行、取消链接并运行:brew link -n python
查看brew
将链接的文件的链接。
链接成功后,请确保你的PATH系统变量中有/usr/local
,若没有,则添加:
export PATH=/usr/local/sbin:/usr/local/bin:$PATH
到您的~/.bashrc
文件中。
如果成功的话你pip
现在就可以工作了。