pip error: Bad interpreter when trying to run 'pip install ...' on OS X

pip error: Bad interpreter when trying to run 'pip install ...' on OS X

我正在尝试安装新版本的 virtualenv(python 存储在 sys.executable 中的路径存在一些问题),结果发现还有另一个问题实际上似乎相关.

当我尝试 运行 pip install virtualenv 时,我得到以下输出:

-bash: /usr/local/Cellar/python/2.7.10_2/bin/pip: /usr/local/opt/python3/bin/python3.4: 
bad interpreter: No such file or directory

现在我重新安装 virtualenv 的初衷是当我 运行 virtualenv venv

Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/virtualenv.py", line 2363, in <module>
    main()
  File "/Library/Python/2.7/site-packages/virtualenv.py", line 832, in main
    symlink=options.symlink)
  File "/Library/Python/2.7/site-packages/virtualenv.py", line 994, in create_environment
    site_packages=site_packages, clear=clear, symlink=symlink))
  File "/Library/Python/2.7/site-packages/virtualenv.py", line 1288, in install_python
    shutil.copyfile(executable, py_executable)
  File "/usr/local/Cellar/python3/3.4.3_2/Frameworks/Python.framework/Versions/3.4/lib/python3.4/shutil.py", line 108, in copyfile
    with open(src, 'rb') as fsrc:
FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/opt/python3/bin/python3.4'

作为可能相关的旁注,我没有使用默认安装的 python3,而是使用 brewed openssl(应用程序需要它)brew-installed python3 并将在我的 /etc/paths 顶部酿造 python3 的路径。

我已经尝试安装和卸载 python 多次,但都没有成功,我完全不知道问题出在哪里。任何方向将不胜感激。

编辑 在@cel 的建议之后,我的 pip 文件的头部(位于 /usr/local/Cellar/python/2.7.10_2/bin/pip)被设置为硬编码 python 版本,因此 #!/usr/local/opt/python3/bin/python3.4。我将其更改为 which python 的输出,即 /usr/local/Cellar/python/2.7.10_2/bin/python

这让我再次成功创建了一个 virtualenv。谢谢!

我在使用 HomeBrew 将我的 python 从版本 3.5.2 升级到版本 3.6.0 时遇到了类似的问题。 HomeBrew 将符号链接 /usr/local/bin/pip3 更新为 /usr/local/Cellar/python3/3.6.0/bin/pip3 但我的 /usr/local/bin/pip 仍在使用旧脚本并且它指向 /usr/local/opt/python3/bin/python3.5.[=22 处的 python 解释器=]

我的做法如下:

  1. 取消链接 /usr/local/bin/pip 并将其更新为指向 /usr/local/Cellar/python3/3.6.0/bin/pip3

  2. 创建了一个指向 /usr/local/Cellar/python3/3.5.2/bin/pip3 的新符号链接 /usr/local/bin/pip3.5 并更新了 pip3.5 脚本的 header 以指向 python 解释器在 /usr/local/Cellar/python3/3.5.2/bin/python3.5

  3. virtualenv 进行了相同的操作。

P.S。最初我在使用 virtualenv 时没有遇到这个问题,因为我将它与 -p 选项一起使用。