python2.7:brew升级python3后没有这样的文件或目录

时间:2018-07-22 19:16:47

标签: python python-3.x homebrew

在完成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

4 个答案:

答案 0 :(得分:3)

这里有两种可能性。


首先,as of Homebrew 1.5python3食谱已重命名为python,而python食谱现在可以作为python@2使用。有关事物的组织方式,请参见the current docs

尽管brew试图像魔术一样工作,但是如果您使用的是Homebrew的pythonpython3,则是非常旧的安装,或者是非常复杂的设置,并且brew upgrade python3,最终只能得到新的(3.x)python食谱。

要解决此问题:

brew install python@2

第二,您可能已经在非Homebr Python中安装了virtualenv,这对于在哪里找到东西感到困惑。

这里最简单的修复方法是使用Homebrew 3.x Python卸载virtualenvpip install

更一般而言,如果您除了Homebrew 3.7,Homebrew 2.7和Apple预先安装了2.7外还拥有其他Python版本,除非有充分的理由需要它们,否则您可能希望将其报废。另外,如果您已经在Apple 2.7中安装了其他Python软件包,则可能要卸载这些软件包,并确保切勿触摸Apple的安装,而仅使用Homebrew 2.7。

或者,如果您需要大量安装Python,则应该习惯使用<specific-python> -m tool而不是tool来运行工具。很难使所有不同的脚本和符号链接保持同步,并且太容易以至于无法使用您认为与pip匹配但实际上安装到一个完全不同的脚本中的python和{{1 }}使用另一个,依此类推。

答案 1 :(得分:0)

我的解决方案是:

pip uninstall virtualenv
pip install virualenv

这是因为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。

Un并使用pip(预期为3.7)重新安装,导致产生相同版本的virtualenv

答案 2 :(得分:0)

尝试了一些无效的方法。.在我看来,这是有效的方法:

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

答案 3 :(得分:0)

我有一个类似的问题:

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重建符号链接。