[英]python2.7: no such file or directory after brew upgrade python3
在執行brew update
和brew upgrade python3
,我一直有這樣的bad interpreter: /usr/local/opt/python/bin/python2.7: no such file or directory
。 例如:
⇒ mkvirtualenv --python=/usr/local/bin/python3 labrador
mkvirtualenv:78: /usr/local/bin/virtualenv: bad interpreter: /usr/local/opt/python/bin/python2.7: no such file or directory
write() failed: Bad file descriptor
這里有兩種可能。
首先,從 Homebrew 1.5 開始, python3
配方被重命名為python
,並且python
配方現在可以作為python@2
。 請參閱有關如何組織事物的當前文檔。
雖然brew
試圖讓它像魔術一樣工作,但如果你有一個非常舊的安裝,或者只是一個非常復雜的設置,使用來自 Homebrew 的python
和python3
,並且你brew upgrade python3
,你最終只能得到新的 (3 .x) python
配方在你期望的地方。
要解決這個問題:
brew install python@2
其次,您可能已經將 virtualenv 安裝到非 Homebrew Python 中,它對在哪里找到東西感到困惑。
這里最簡單的解決方法是卸載該virtualenv
並使用 Homebrew 3.x Python pip install
它。
更一般地說,如果您有除 Homebrew 3.7、Homebrew 2.7 和 Apple 預裝的 2.7 之外的其他 Python 版本,除非您有充分的理由需要它們,否則您可能想要廢棄它們。 而且,如果您已經將任何其他 Python 包安裝到 Apple 的 2.7 中,您可能想要卸載它們並確保永遠不要接觸 Apple 安裝並且只使用 Homebrew 2.7。
或者,如果您確實需要安裝大量 Python,您應該習慣於使用<specific-python> -m tool
而不是tool
來運行tool
。 很難讓所有不同的腳本和符號鏈接保持同步,而且很容易最終使用一個你認為與python
匹配但實際上安裝到一個完全不同的pip
中的pip
,以及一個使用另一個的virtualenv
,等等。
我的解決方案是:
pip uninstall virtualenv
pip install virtualenv
這是因為, virtualenv
和python
版本不同步,但是python
和pip
仍然在一起:
$ virtualenv
-bash: /usr/local/bin/virtualenv: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory
$ python --version
Python 3.7.0
$ pip --version
pip 10.0.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
python
和pip
都是 3.7,但virtualenv
預計是 2.7。
使用pip
(預期為 3.7) virtualenv
和重新安裝導致相同版本的virtualenv
。
嘗試了一些不起作用的事情..在我的情況下,這是有效的:
cd /usr/local/opt/python/bin/ ln -nfs /usr/local/Cellar/python@2/2.7.15_1/Frameworks/Python.framework/Versions/2.7/bin/python python2.7
我有一個類似的問題:
pre-commit is not in your $PATH; setting one up for you
Using virtualenv: /Users/jwilliams/.indy/venvs/pre-commit-venv_macosx-10.13-x86-64_cp2.7
$ cd /Users/jwilliams/repos/terraform-aws; /Users/jwilliams/.indy/venvs/pre-commit-venv_macosx-10.13-x86-64_cp2.7/bin/pre-commit install -f --install-hooks
dyld: Library not loaded: @executable_path/../.Python
Referenced from: /Users/jwilliams/.indy/venvs/pre-commit-venv_macosx-10.13-x86-64_cp2.7/bin/python2.7
Reason: image not found
$ cd /Users/jwilliams/repos/terraform-aws; /Users/jwilliams/.indy/venvs/pre-commit-venv_macosx-10.13-x86-64_cp2.7/bin/pre-commit install -f --install-hooks --hook-type pre-push
dyld: Library not loaded: @executable_path/../.Python
Referenced from: /Users/jwilliams/.indy/venvs/pre-commit-venv_macosx-10.13-x86-64_cp2.7/bin/python2.7
Reason: image not found
我按照上述步驟操作並得到相同的錯誤。 在我的情況下,修復是刪除~/.indy directory
,這迫使indy
重建符號鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.