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

Mon*_*lal 75 python macos installation pip osx-mavericks

我不知道这笔交易是什么,但我遇到了一些无处可去的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
Run Code Online (Sandbox Code Playgroud)

小智 147

我曾使用home-brew在OS X 10.10上安装2.7并且新安装缺少sym链接.我跑了

brew link --overwrite python
Run Code Online (Sandbox Code Playgroud)

如何在Homebrew中使用符号链接python中提到的它解决了这个问题.

  • 这救了我.FWIW,我必须做三个步骤来修复我在El Capitan上的Python:brew install python; brew linkapps python; brew链接--overwrite python (6认同)
  • 反向:brew unlink python (3认同)
  • 只是为了补充这一点。我发现无论出于何种原因,我都必须运行“xcode-select --install”。“brew重新安装python”在我这样做之前不起作用。在我的特定实例中,我使用迁移助手从一台物理计算机移动到另一台物理计算机。这两件事之后,一切都解决了,pip3 工作了。 (2认同)
  • Python 已经为我正确链接了,有帮助的是“pip3 install --upgrade pip”,正如@Excalibur 在下面的评论中指出的那样。 (2认同)

Ste*_*lla 48

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

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

如果你跑这个怎么办?

$ head -n1 /usr/local/bin/pip
Run Code Online (Sandbox Code Playgroud)

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

$ ls -al /usr/local/opt/python/bin/python2.7
Run Code Online (Sandbox Code Playgroud)

如果这表示"没有这样的文件或目录",那么pip正在尝试使用已删除的python二进制文件.

接下来,试试这个:

$ which python
$ which python2.7
Run Code Online (Sandbox Code Playgroud)

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

由于看起来pip已成功安装在某个地方,因此它可能是/usr/local/bin/pip旧版pip的一部分,它的位置更高PATH.要测试它,您可以尝试移动不起作用的pip二进制文件,如下所示(可能需要sudo):

$ mv /usr/local/bin/pip /usr/local/bin/pip.old
Run Code Online (Sandbox Code Playgroud)

然后尝试pip --version再次运行您的命令.希望它能够获得正确的版本并成功运行.

  • 我不得不安装pip:`sudo/usr/bin/easy_install pip` - 在这里找到它:http://stackoverflow.com/questions/27308234/usr-bin-python-vs-opt-local-bin-python2-7 -on-OS-X (4认同)

The*_*ist 43

只有OSX及其变体的解决方案.

ln -s /usr/local/bin/python /usr/local/opt/python/bin/python2.7
Run Code Online (Sandbox Code Playgroud)

  • @TheExorcist 不幸的是,对于我们所有人来说,Python2 和 Python3 是不同的语言。为一种语言编写的代码在另一种语言中运行时会中断。用 python2.7 批量替换 python 似乎很可能会破坏其他应用程序。该解决方案的“工作原理”与您忘记钥匙时删除前门的工作原理相同。它可以帮助你渡过难关,但当你的房子开始充满虫子时,请不要哭泣。 (2认同)

kot*_*ole 27

固定点

对于此错误:

~/Library/Python/2.7/bin/pip: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory`
Run Code Online (Sandbox Code Playgroud)

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

pip install --upgrade pip
Run Code Online (Sandbox Code Playgroud)

但是,当然,此命令使用pip,因此失败并出现相同的错误.

从这个混乱中引导自己的方法:

  1. which pip
  2. 在文本编辑器中打开该文件
  3. 将第一行更改#!/usr/local/opt/python/bin/python2.7为eg #!/usr/local/opt/python2/bin/python2.7(注意路径中的python2),或者在计算机上使用工作python解释器的任何路径.
  4. 现在,pip install --upgrade pip(这会覆盖你的黑客并获得最新版本的pip工作,解释器问题应该修复)

修复virtualenv

对我来说,我发现这个问题首先出现了与virtualenv相同的问题:

~/Library/Python/2.7/bin/virtualenv: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory`
Run Code Online (Sandbox Code Playgroud)

这里的解决方案是运行

pip uninstall virtualenv
pip install virtualenv
Run Code Online (Sandbox Code Playgroud)

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

  • 是的,在 Mac OSX 上安装了 Python 2.7 和 3.6,然后升级到 3.6,我遇到了这个问题。这是对我有用的解决方案(`pip3 install --upgrade pip`) (2认同)

小智 26

我使用sudo为我的安装犯了同样的错误.(糟糕)

brew install python
brew linkapps python
brew link --overwrite python 
Run Code Online (Sandbox Code Playgroud)

这使一切恢复正常.

  • linkapps已弃用 (20认同)

小智 12

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

  • 我检查了python路径的位置(试试which python)
  • 我检查了pip文件的第一行(/usr/local/bin/pip2.7/usr/local/bin/pip).该行应该说明python路径的正确路径.在我的情况下,没有.我纠正了它,现在它工作正常.


Sim*_*ggs 11

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

我用哪个来查找我的python2.7文件(/usr/local/bin/python2.7)的位置

which python2.7
Run Code Online (Sandbox Code Playgroud)

然后,我将真正的python2.7安装位置与脚本预期的位置链接起来:

ln -s /usr/local/bin/python2.7 /usr/local/opt/python/bin/python2.7
Run Code Online (Sandbox Code Playgroud)

  • 救命稻草!谢谢你。 (2认同)

小智 9

如果它对任何人都有帮助,那么当pip在升级之后停止工作时,这个其他问题中提到的解决方案对我有用:升级后点破了

当先前缓存的位置发生更改时,这似乎是一个问题,因此您可以使用以下命令刷新缓存:

hash -r
Run Code Online (Sandbox Code Playgroud)


feu*_*eux 8

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


d g*_*d g 5

我有同样的问题,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.
Run Code Online (Sandbox Code Playgroud)