【问题标题】:pip installation /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directorypip安装/usr/local/opt/python/bin/python2.7:错误的解释器:没有这样的文件或目录
【发布时间】:2015-10-24 10:17:41
【问题描述】:

我不知道这是怎么回事,但我被一些 stackoverflow 解决方案卡住了,但这些解决方案一无所获。你能帮我解决这个问题吗?

  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 macos installation pip osx-mavericks


    【解决方案1】:

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

    xcode-select --install
    

    这将安装最新的 xcode 版本并修复它

    【讨论】:

      【解决方案2】:

      TLDR: 在您的路径 a 中找到的 pip 是一个符号链接,并且引用的位置不再包含可执行文件。您需要更新符号链接。

      这有助于理解一些事情。

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

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

      1. 找到可执行文件的位置 - which pip(给出类似 /usr/local/bin/pip 的内容)
      2. 检查符号链接参考位置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. 删除旧符号链接rm -r /usr/local/bin/pip
      5. 如果使用homebrew,则查找实际的pip 可执行文件,它将在/usr/local/opt 中,您可以使用ls /usr/local/opt/ | grep python 之类的内容来查找它。
      6. 为 pip 可执行文件添加正确的符号链接。 ln -s /usr/local/opt/python@3.7/bin/pip3 /usr/local/bin/pip

      【讨论】:

        【解决方案3】:

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

        尝试:

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

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

        【讨论】:

          【解决方案4】:

          对我来说,在 centOS 7 上 我不得不从 /bin 中删除旧的 pip 链接

          rm /bin/pip2.7 
          rm /bin/pip
          

          然后重新链接它

          sudo ln -s  /usr/local/bin/pip2.7 /bin/pip2.7
          

          那么如果

          /usr/local/bin/pip2.7
          

          有效,这应该有效

          【讨论】:

            【解决方案5】:

            您需要做的就是...关闭终端窗口并重新打开新窗口以解决此问题。

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

            【讨论】:

              【解决方案6】:

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

              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
              

              【讨论】:

                【解决方案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,所以它会失败并出现同样的错误。

                摆脱困境的方法:

                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 遇到了同样的问题,然后发现了这个问题:

                ~/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
                

                如果运行该命令从 pip 得到相同的错误,请参见上文。

                【讨论】:

                • 是的,在 Mac OSX 上安装了 Python 2.7 和 3.6,然后升级到 3.6,我遇到了这个问题。这是对我有用的解决方案 (pip3 install --upgrade pip)
                • 否:pip Traceback(最近一次调用最后一次):文件“/usr/local/bin/pip”,第 7 行,在 from pip._internal import main ImportError: No module named pip ._内部
                • @Excalibur 我在接受的答案下添加了您的解决方案作为评论。谢谢!
                【解决方案8】:

                因为我在 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
                

                【讨论】:

                • 救命稻草!谢谢。
                【解决方案9】:

                我遇到了同样的问题。如果我运行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版本的fabric了。

                === 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
                

                希望这会有所帮助。

                【讨论】:

                  【解决方案10】:

                  仅在 OSX 及其变体中的解决方案。

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

                  【讨论】:

                  • 试图以一种无缝且简单的方式呈现答案。
                  • 这可能会对使用 python 的其他程序产生副作用。此外,Python 2 的生命周期结束日期为 2020 年 1 月 1 日,其开发人员表示最终(或在某些环境中,已经)没有修饰符的“python”应参考 Python 3 python.org/dev/peps/pep-0394
                  • @kotoole 从您的回答看来您的眼睛可以看到,但无法观察,只需将 python2.7 替换为 python3.x 即可。
                  • @TheExorcist 不幸的是,对于我们所有人来说,Python2 和 Python3 是不同的语言。为一种语言编写的代码在另一种语言中运行时会中断。用 python2.7 替换 python 似乎很可能会破坏其他应用程序。当您忘记钥匙时,此解决方案的“工作方式”与删除前门的工作方式相同。它可以帮助您度过难关,但当您的房子开始充满虫子时,请不要哭泣。
                  • @kotoole offcourse,你是对的,但有时我们必须做我们目前需要做的事情。
                  【解决方案11】:

                  我有同样的问题,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.
                  

                  【讨论】:

                  • 这行得通。但这是一个长期的解决方案吗?我注意到这个问题与其他几件事有关,因此这将需要针对每个不再起作用的实例进行更改,并且我担心此问题的长期影响。
                  • 绝对不是长期修复。就我而言,我在我的 python 环境中搞砸了,这就是为什么我认为它陷入这种情况并寻找快速修复的原因。我怀疑卸载 virtualenv 然后用功能性 python2.7 pip 重新安装它会使这个坚持下去。
                  【解决方案12】:
                  sudo /usr/bin/easy_install pip
                  

                  这个命令对我有用

                  【讨论】:

                    【解决方案13】:

                    为了简化操作,我们可以使用以下命令重新安装版本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)
                    

                    【讨论】:

                    • 要重新安装,brew 中有 reinstall 命令:brew reinstall python@2
                    【解决方案14】:

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

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

                    【讨论】:

                      【解决方案15】:

                      在我的情况下,我决定从我的 mac 中删除 homebrew python 安装,因为我已经通过 MacPorts 在我的 mac 上安装了另外两个版本的 python。这导致了错误消息。

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

                      【讨论】:

                        【解决方案16】:

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

                        好像是之前缓存的位置发生了变化,所以可以用这个命令刷新缓存:

                        hash -r
                        

                        【讨论】:

                          【解决方案17】:

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

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

                          这让一切恢复正常。

                          【讨论】:

                          • linkapps 已弃用
                          【解决方案18】:

                          我曾使用 home-brew 在 OS X 10.10 上安装 2.7,但新安装缺少符号链接。我跑了

                          brew link --overwrite python
                          

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

                          【讨论】:

                          • 这救了我。 FWIW,我必须执行三个步骤才能在 El Capitan 上修复我的 Python: brew install python;酿造链接应用程序python;酿造链接--覆盖python
                          • 反之如何?
                          • 反向:brew unlink python
                          • 只是添加到这个。我发现无论出于何种原因,我都必须运行“xcode-select --install”。在我这样做之前,“brew reinstall python”将无法工作。在我的特定实例中,我使用迁移助手从一台物理计算机移动到另一台物理计算机。在这两件事之后,一切都解决了,pip3 工作了。
                          • Python 已经为我正确链接了,@Excalibur 在下面的评论中指出,pip3 install --upgrade pip 有帮助。
                          【解决方案19】:

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

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

                          【讨论】:

                            【解决方案20】:

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

                            你为什么使用sudo?理想情况下,您应该能够从您的用户帐户而不是使用 root 安装和运行所有内容。如果您将 root 和本地帐户混合在一起,则更有可能遇到权限问题(例如,查看它给出的有关“当前用户不拥有父目录”的警告)。

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

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

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

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

                            如果显示“没有这样的文件或目录”,则 pip 正在尝试使用已删除的 python 二进制文件。

                            接下来,试试这个:

                            $ which python
                            $ which python2.7
                            

                            查看实际运行的 python 二进制文件的路径。

                            由于看起来 pip 已成功安装在某处,因此 /usr/local/bin/pip 可能是旧版 pip 安装的一部分,位于 PATH 上。为了测试这一点,您可以尝试像这样将无法运行的pip 二进制文件移开(可能需要sudo):

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

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

                            【讨论】:

                            • 很好的解释。旁注:必须调试安装的语言的包管理器以使项目脱离 mercurial 使我对所有这些计算机事物失去信心。哎呀.. 现在出现一个新的 python 错误“AttributeError local repository”
                            • 我遇到了同样的问题,但这对我不起作用,即使按照这些说明操作也是如此。 PIP 仍在使用不正确的路径。还有其他方法可以解决这个问题吗?
                            • 我必须安装 pip:sudo /usr/bin/easy_install pip - 在这里找到它:stackoverflow.com/questions/27308234/…
                            • 问题是,如果这是唯一安装的 pip 版本,那么你就不走运了
                            猜你喜欢
                            • 2018-09-25
                            • 1970-01-01
                            • 1970-01-01
                            • 2020-05-03
                            • 1970-01-01
                            • 2014-10-24
                            • 1970-01-01
                            • 2020-12-01
                            • 2021-04-01
                            相关资源
                            最近更新 更多