簡體   English   中英

python2.7:brew升級python3后沒有這樣的文件或目錄

[英]python2.7: no such file or directory after brew upgrade python3

在執行brew updatebrew 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 的pythonpython3 ,並且你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

這是因為, virtualenvpython版本不同步,但是pythonpip仍然在一起:

$ 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)

pythonpip都是 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM