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


90

我不知道这是怎么回事,但是我被困在一些无法解决的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

Answers:


167

我曾使用自制软件在OS X 10.10上安装2.7,而新安装缺少符号链接。我跑了

brew link --overwrite python

如何在Homebrew中符号链接python中所述?它解决了问题。


6
那救了我。FWIW,我必须执行三个步骤才能在El Capitan上修复我的Python:brew install python; brew linkapps python; 酿造链接--overwrite python
Saish

怎么做相反呢?
bubakazouba

3
反向:brew断开链接python
Anders B,

1
只是添加到此。我发现无论出于什么原因我都必须运行“ xcode-select --install”。直到我这样做,“ brew reinstall python”才起作用。在我的特定实例中,我使用了迁移助手从一台物理计算机移动到另一台物理计算机。在这两件事之后,一切都解决了,pip3正常了。
chrisallick

Python已为我正确链接,pip3 install --upgrade pip@ Excalibur在更下方的注释方式中指出了帮助。
Retrovertigo

56

我猜您有两个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/pippip上的旧pip安装的一部分PATH。为了进行测试,您可以尝试将无法运行的pip二进制文件移开,例如sudo

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

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


很好的解释。旁注:必须调试安装的语言的程序包管理器才能使项目脱离正常状态,这使我对所有这些计算机问题失去了信心。糟糕。现在是新的python错误“ AttributeError本地存储库”
nicolas

1
我有同样的问题,但是即使按照这些说明进行操作,这对我也不起作用。PIP仍使用错误的路径。还有另一种解决方法吗?
亚当·斯塔吉尔

5
我必须安装PIP:sudo /usr/bin/easy_install pip-在这里找到它:stackoverflow.com/questions/27308234/...
亚当Starrh

问题是,如果这是已安装的pip的唯一版本,那么您
就不

55

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

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

1
试图以无缝,简单的方式呈现答案。
TheExorcist

这可能会对使用python的其他程序产生副作用。此外,Python 2的生命周期将于2020年1月1日结束,其开发人员表示,最终(或在某些环境中,已经)没有修饰符的“ python”应该引用Python 3 python.org/dev/peps / pep-0394
kotoole19年

@kotoole从您的答案看来,您的眼睛似乎可以看到,但无法观察到,只需将python2.7替换为python3.x,它仍然可以正常工作。
TheExorcist,

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

@kotoole的课程,您是对的,但有时我们必须做当前需要做的事情。
TheExorcist

32

固定点

对于此错误:

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

对我来说,我首先遇到了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中给出了相同的错误,请参见上文。


1
是的,在Mac OSX上拥有Python 2.7和3.6,然后升级到3.6,我遇到了这个问题。这是对我pip3 install --upgrade pip
有用

Nope:pip回溯(最近一次呼叫最近):pip._internal导入主文件中<module>中文件“ / usr / local / bin / pip”,第7行,导入错误:没有名为pip._internal的模块
einarc

@Excalibur我将您的解决方案作为评论添加到了接受的答案下。感谢那!
retrovertigo

26

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

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

这使一切恢复正常。


21
linkapps已弃用
Steve

15

因为我在Mac OSX上同时安装了python 2和python 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

2
救命!谢谢。
Brian Fegter

12

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

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

9

万一它对任何人都有帮助,则另一个问题中提到的解决方案对我来说是有用的,当升级后pip今天停止工作时:升级后pip损坏

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

hash -r

9

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

1
要重新安装,请reinstall执行以下命令brewbrew reinstall python@2
Valeriy Van

4

我遇到过同样的问题。我同时安装了python 2.7和3.6。Python 2.7可以virtualenv正常工作,但是在安装Python3之后,virtualenv一直在寻找2.7版,但找不到它。正在pip install virtualenv安装安装了virtualenv的Python3版本。

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


4

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

这工作了。但这是一个长期解决方案吗?我注意到此问题还有其他几件事,因此这将需要针对不再可用的每个实例进行更改,并且我担心此问题的长期影响。
杰克·T

绝对不是长期解决方案。就我而言,我在python环境中摸索着,这就是为什么我认为它进入了这种情况并寻求快速修复的原因。我怀疑先卸载virtualenv,然后用功能性的python2.7 pip重新安装它,然后再坚持下去。
dg

2

我有同样的问题。如果我跑步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

希望这可以帮助。


2

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

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

2

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

问题是,新的python路径未添加到bashrc中(无论是源代码还是新的终端窗口都将有所帮助)。


1

就我而言,我决定从Mac中删除自家安装的python,因为我已经通过MacPorts在Mac上安装了另外两个版本的python。这导致了错误信息。

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



1

对我而言,在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

可行,这应该可行


0

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

尝试:

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.