在完成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
答案 0 :(得分:3)
这里有两种可能性。
首先,as of Homebrew 1.5,python3
食谱已重命名为python
,而python
食谱现在可以作为python@2
使用。有关事物的组织方式,请参见the current docs。
尽管brew
试图像魔术一样工作,但是如果您使用的是Homebrew的python
和python3
,则是非常旧的安装,或者是非常复杂的设置,并且brew upgrade python3
,最终只能得到新的(3.x)python
食谱。
要解决此问题:
brew install python@2
第二,您可能已经在非Homebr Python中安装了virtualenv,这对于在哪里找到东西感到困惑。
这里最简单的修复方法是使用Homebrew 3.x Python卸载virtualenv
和pip 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
这是因为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。
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
重建符号链接。