pip 安装 /usr/local/opt/python/bin/python2.7: 错误的解释器: 没有那个文件或目录

pip installation /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory

我不知道这是怎么回事,但我一直在遵循一些无处可去的 Whosebug 解决方案。你能帮我解决这个问题吗?

  Monas-MacBook-Pro:CS764 mona$ sudo python get-pip.py
    The directory '/Users/mona/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
    The directory '/Users/mona/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
    /tmp/tmpbSjX8k/pip.zip/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
    Collecting pip
      Downloading pip-7.1.0-py2.py3-none-any.whl (1.1MB)
        100% |████████████████████████████████| 1.1MB 181kB/s 
    Installing collected packages: pip
      Found existing installation: pip 1.4.1
        Uninstalling pip-1.4.1:
          Successfully uninstalled pip-1.4.1
    Successfully installed pip-7.1.0
    Monas-MacBook-Pro:CS764 mona$ pip --version
    -bash: /usr/local/bin/pip: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory

我猜你有两个 python 安装,或两个 pip 安装,其中一个已被部分删除。

为什么使用sudo?理想情况下,您应该能够从您的用户帐户而不是使用 root 来安装和 运行 一切。如果您将 root 和您的本地帐户混合在一起,您更有可能 运行 进入权限问题(例如,请参阅它给出的有关 "parent directory is not owned by the current user" 的警告)。

如果你运行这个你会得到什么?

$ head -n1 /usr/local/bin/pip

这将向您显示 python 二进制文件 pip 正在尝试使用哪个。如果它指向 /usr/local/opt/python/bin/python2.7,那么尝试 运行 宁这个:

$ ls -al /usr/local/opt/python/bin/python2.7

如果显示 "No such file or directory",则 pip 正在尝试使用已删除的 python 二进制文件。

接下来,试试这个:

$ which python
$ which python2.7

查看实际工作的 python 二进制文件的路径。

由于 pip 似乎已成功安装在某处,因此 /usr/local/bin/pip 可能是 PATH 上较旧的 pip 安装的一部分。要测试这一点,您可以尝试像这样移动无法正常运行的 pip 二进制文件(可能需要 sudo):

$ mv /usr/local/bin/pip /usr/local/bin/pip.old

然后再次尝试 运行ning 您的 pip --version 命令。希望它选择了正确的版本并且 运行s 成功。

我有类似的问题。基本上 pip 在寻找错误的路径(旧安装路径)或 python。以下解决方案对我有用:

  • 我检查了 python 路径的位置(尝试 which python
  • 我检查了 pip 文件的第一行(/usr/local/bin/pip2.7/usr/local/bin/pip)。该行应说明 python 路径的正确路径。就我而言,没有。我更正了它,现在它可以正常工作了。

我曾使用自制程序在 OS X 10.10 上安装 2.7,但新安装缺少符号链接。我运行

brew link --overwrite python

How to symlink python in Homebrew? 中所述,它解决了问题。

我在安装时使用 sudo 时犯了同样的错误。 (糟糕)

brew install python
brew linkapps python
brew link --overwrite python 

这让一切恢复正常。

如果它对任何人有帮助,当 pip 在升级后今天停止工作时,另一个问题中提到的解决方案对我有用:Pip broken after upgrading

好像是以前缓存的位置发生变化时出现的问题,所以你可以用这个命令刷新缓存:

hash -r

就我而言,我决定从我的 mac 中删除自制软件 python 安装,因为我已经在 mac 上安装了另外两个版本的 python MacPorts。这导致了错误消息。

通过 brew 重新安装 python 解决了我的问题。

我遇到了同样的问题。我同时安装了 Python 2.7 和 3.6。 Python 2.7 有 virtualenv 工作,但安装 Python3 后,virtualenv 一直在寻找 2.7 版本,但找不到。 执行 pip install virtualenv 安装了 Python3 版本的 virtualenv。

然后,对于每个命令,如果我想使用 Python2,我会使用 virtualenv --python=python2.7 somecommand

为了简化操作,我们可以使用以下命令重新安装版本2:

brew install python@2

然后在我的 mac 上,它看起来如下:

▶ python -V
Python 2.7.10

▶ python2 -V
Python 2.7.14

▶ python3 -V
Python 3.6.5

▶ pip2 -V
pip 9.0.3 from /usr/local/lib/python2.7/site-packages (python 2.7)

▶ pip3 -V
pip 9.0.3 from /usr/local/lib/python3.6/site-packages (python 3.6)

▶ pip --version
pip 9.0.3 from /usr/local/lib/python2.7/site-packages (python 2.7)
sudo /usr/bin/easy_install pip

这个命令对我有用

我遇到了同样的问题。如果我运行brew link --overwrite python2。还有zsh: /usr/local/bin//fab: bad interpreter: /usr/local/opt/python/bin/python2.7: no such file or directory.

cd /usr/local/opt/
mv python2 python

解决了!现在我们可以使用 python2 版本的面料。

=== 2018/07/25 更新

当您的 os python 链接到 python3 时,可以方便地使用 python2 版本 fab。 .sh 为你的命令。

# fab python2
cd /usr/local/opt
rm python
ln -s python2 python

# use the fab cli
...

# link to python3
cd /usr/local/opt
rm python
ln -s python3 python

希望对您有所帮助。

我有同样的问题,virtualenv 指向一个旧的 python 路径。修复路径解决了问题:

$ virtualenv -p python2.7 env
-bash: /usr/local/bin/virtualenv: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory

$ which python2.7
/opt/local/bin/python2.7

# needed to change to correct python path
$ head  /usr/local/bin/virtualenv
#!/usr/local/opt/python/bin/python2.7 <<<< REMOVED THIS LINE
#!/opt/local/bin/python2.7 <<<<< REPLACED WITH CORRECT PATH

# now it works:
$ virtualenv -p python2.7 env
Running virtualenv with interpreter /opt/local/bin/python2.7
New python executable in env/bin/python
Installing setuptools, pip...done.

OSX 及其变体中的唯一解决方案。

ln -s /usr/local/bin/python /usr/local/opt/python/bin/python2.7

修正点数

对于此错误:

~/Library/Python/2.7/bin/pip: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory`

这个问题的根源是在 pip 中硬编码的错误 python 路径(这意味着它不会通过例如更改 $PATH 来修复)。该路径不再在最新版本的 pip 中硬编码,因此 应该 工作的解决方案是:

pip install --upgrade pip

当然,这个命令使用了 pip,所以它失败并出现同样的错误。

bootstrap 自己摆脱困境的方法:

  1. 运行 which pip
  2. 在文本编辑器中打开该文件
  3. 将第一行从 #!/usr/local/opt/python/bin/python2.7 更改为例如#!/usr/local/opt/python2/bin/python2.7(注意路径中的 python2),或您机器上工作的 python 解释器的任何路径。
  4. 现在,pip install --upgrade pip(这会覆盖您的 hack 并让 pip 在最新版本上工作,其中应该修复解释器问题)

修复 virtualenv

对我来说,我发现这个问题是首先从 virtualenv 遇到相同的问题:

~/Library/Python/2.7/bin/virtualenv: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory`

这里的解决方法是运行

pip uninstall virtualenv
pip install virtualenv

如果 运行ning 该命令从 pip 中给出相同的错误,请参见上文。

因为我在 Mac OSX 上安装了 python 2 和 3,所以我遇到了各种各样的错误。

我用它来找到我的 python2.7 文件 (/usr/local/bin/python2.7)

的位置
which python2.7

然后我将我的真实 python2.7 安装位置与脚本预期的安装位置进行符号链接:

ln -s /usr/local/bin/python2.7 /usr/local/opt/python/bin/python2.7

编辑此文件的第一行对我有用:

MBP-de-Jose:~ josejunior$ which python3

/usr/local/Cellar/python/3.7.3/bin/python3

MBP-de-Jose:~ josejunior$

之前

#!/usr/local/opt/python/bin/python3.7

之后

#!/usr/local/Cellar/python/3.7.3/bin/python3

您需要做的就是...关闭终端 window 并重新打开一个新终端来解决这个问题。

问题是,新的 python 路径没有添加到 bashrc(源代码或新终端 window 都会有所帮助)。

对我来说,在 centOS 7 上 我不得不通过

从 /bin 中删除旧的 pip link
rm /bin/pip2.7 
rm /bin/pip

然后用

重新link
sudo ln -s  /usr/local/bin/pip2.7 /bin/pip2.7

那么如果

/usr/local/bin/pip2.7

有效,这应该有效

您可以有两个不同版本的 Python 和 pip。

尝试:

pip2 install --upgrade pip 然后 pip2 install -r requirements.txt

或者 pip3 如果您使用的是较新的 Python 版本。

TLDR: pip 在您的路径中发现 a 是一个 symlink 并且引用的位置不再包含可执行文件。您需要更新 symlink.

它有助于理解一些事情。

  • 当您键入 pythonpip 之类的内容时,您 os 将搜索 /etc/paths 以尝试找到该命令的关联可执行文件。您可以使用 cat /etc/paths.
  • 查看其中的所有内容
  • 要确定您的 shell 将使用的可执行文件的位置,有一个方便的命令 which,您可以键入 which pythonwhich pip。这将告诉您 shell 将用于该命令的可执行文件的位置。
  • 这部分是关键。该位置可能是也可能不是实际的可执行文件,它可能是符号 link (symlink).
  • /etc/paths包含/usr/local/bin是很常见的,/usr/local/bin也是实际可执行文件的一堆符号link也很常见。不是可执行文件本身。
  • 如果 symlinks 引用位置的可执行文件不存在,您将收到类似 bad interpreter: No such file or directory
  • 的错误

话虽如此,问题很可能是 pip 是一个 symlink 并且 linked 可执行文件可能不再存在于该位置。要修复它,请执行以下操作

  1. 找到可执行文件的位置 - which pip(给出这样的东西 /usr/local/bin/pip
  2. 检查 symlink 参考位置 ls -l /usr/local/bin/pip | grep pip(给出这样的东西 pip -> /usr/local/opt/python@3.7/bin/pip3
  3. 检查引用位置是否存在可执行文件 ls /usr/local/opt/python@3.7/bin/pip3(您遇到了这个问题,所以它可能不存在)。
  4. 删除旧符号link rm -r /usr/local/bin/pip
  5. 找到实际的 pip 可执行文件,如果使用 homebrew 它将在 /usr/local/opt 中,您可以使用 ls /usr/local/opt/ | grep python 之类的东西找到它。
  6. 为 pip 可执行文件添加正确的 symlink。 ln -s /usr/local/opt/python@3.7/bin/pip3 /usr/local/bin/pip

每次 iOS 升级时通常会弹出此错误。尝试

xcode-select --install

这将安装最新的 xcode 版本,应该会修复它

下面的命令适用于 Mac OS 12.3.1:

python3 -m pip install mercurial