我已經使用 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
沒有回任何點
- 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
會將 a 安裝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
應該在/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
這對於所有以#!/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
指向 python 的 brew 版本,並且還為您提供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
現在應該可以工作了。