pip3:坏的解释器:没有这样的文件或目录。

126

我正在尝试使用pip3命令安装依赖项。

当前情况:

Dev$ which python
/Users/Dev/anaconda/bin/python

Dev$ which python3
/usr/local/bin/python3


Dev$ pip --version
pip 10.0.1 from /usr/local/lib/python2.7/site-packages/pip (python 2.7)

Dev$ pip3 --version
-bash: /usr/local/bin/pip3: /usr/local/opt/python3/bin/python3.6: bad 
interpreter: No such file or directory

我不知道为什么我的pip3命令无法正常工作。

我尝试了类似以下的操作:

brew link --overwrite python 
9个回答

290
你有许多不同的Python安装,至少还有一个已删除的Python安装。这种情况正是为什么不再建议直接运行pip或pip3,而是优先考虑:
python3 -m pip install whatever

这样可以确保你绝对正常地运行 pip,并且与 python3 相匹配,而 pip3 只是意味着你在运行与某个 Python 3.x 相匹配的 pip 中的任意一个,这可能是你安装的任何一个版本。

或者,更好的方法是使用虚拟环境,这样你就可以依赖于当前活动环境中的 pythonpip 命令,甚至不必担心它们在系统范围内的含义。


但是,如果你想知道你是如何陷入这种困境的以及如何解决它:

你的 python3 命令可能来自 Homebrew Python(你可以检查一下;ls -l /usr/local/bin/python3,看看它是不是一个指向 /usr/local/Cellar/python 中某个文件的符号链接)。

你的 pip3 命令来自一个不存在的 Python 3。很可能,你安装了另一个 Python 3,覆盖了 Homebrew Python 3 的 pip3,然后卸载了它,留下了一个损坏的 pip

最简单的方法是只需执行 rm /usr/local/bin/pip3。然后,假设你想让 Homebrew Python 成为你的默认的 python3 和 pip3,重新执行 brew link python 命令。如果它向你展示任何警告或错误,则仍有其他问题需要解决。如果没有,/usr/local/bin/pip3 现在应该是 Homebrew 3.6 版本的 pip,而 which pip3 应该会选择 /usr/local/bin/pip3,一切都很好,直到下一次安装另一个 Python 3 并覆盖一堆东西。

更好的解决方法是选择一种安装 Python 的方法——无论是 Anaconda、Homebrew、python.org 安装程序还是其他方式——并始终使用该方法。卸载所有内容,重新安装你实际想要的那个,以后再也不要碰其他的了。(不幸的是,你仍然会被困在 Apple 的系统 Python 2.7 中,但如果你只使用 3.x,这就无关紧要了。)


3
或者,更好的方法是使用虚拟环境。我在使用虚拟环境时仍然遇到了这个问题,但你的解决方案解决了这个问题。 - Nic Scozzaro
好的答案。据我所知,Xcode命令行工具也提供了python3 - PatrickT
3
有没有PEP文件引用“不再建议直接使用pip”的内容? - user14717
2
你可以将python3 -m pip..这一行更改为更详细的Python3版本,例如python3.10 -m pip.. - Timo
你也可以使用 pip3 install xyz 进行安装。 - Abhishek Thapliyal
显示剩余3条评论

31
你可以尝试通过以下方式更改pip的Python版本:
vim /path/to/pip
然后将被注释的行(第一行)更改为所需的Python版本。

这实际上是有效的,你所要做的就是更改Python3版本,如果它指向错误的位置。 - thanatoz
太好了!这对我也起作用。我用vim打开了pip和pip3文件,不知何故之前删除的Python位置还在那里,我将其更改为正确的路径,然后它就起作用了!谢谢。 - ibilgen
对我来说起作用了,我将Python的路径错误地设置为XCode,并且这个提示解决了我的问题。要列出可以找到pip的区域,您可以使用“echo $PATH”命令。 - Dawid Loranc
这与拥有最多投票的回答(https://dev59.com/cVUK5IYBdhLWcg3wuB94#51373253)上使用`brew link python`相比,似乎是一个技巧。这里有关于brew命令的更多信息。 - Timo
2
@Timo,无论是黑客还是不是,这是我唯一有效的方法。正如被接受的答案所说,python -m pip install whatever 是正确的方法,我将继续使用它。 - David Gard

14

我遇到了同样的问题。

对我而言,venv/bin/pip 中 Python 的路径是错误的。

1. 打开 pip:

gedit path/to/pip

#!/home/saeed/project-master/venv/bin/python3.9
# -*- coding: utf-8 -*-
import re
import sys

2. 更正pip文件第一行中的Python路径:

#!/home/saeed/project/venv/bin/python3.9
# -*- coding: utf-8 -*-
import re
import sys

1
谢谢!这解决了我的问题。我一直在想为什么它突然停止工作。原来是因为我更改了项目的目录名称,而虚拟环境中的pip文件有一个硬编码路径。 - mosemos

12
运行这三个命令。
python -m pip uninstall pip
python -m ensurepip
python -m pip install --upgrade pip

6

我做了一些补充,希望能对某些人有所帮助。

我当前安装了Python3.9,但我收到了像TS报告的错误消息:

/home/username/.local/bin/pip: bad interpreter: /usr/bin/python3.6: No such file or directory

我发现文件pip3.6pip存在于~/.local/bin目录下,且具有以下shebang(请注意明确指定了Python版本):

#!/usr/bin/python3.6

但由于我的系统上没有3.6版本,调用

$ pip

显然会导致错误。将3.6替换为3.9可以解决该问题。


-1
我在使用以下命令时遇到了相同的问题:
pip install openpyxl

:bad interpreter: 没有这个文件或目录
可以通过以下命令解决:
pip3.10 install openpyxl

在我的Mac机器上,已经安装了Python 3.8和3.10版本,因此在使用pip命令安装任何模块时,我们需要明确指定版本。

-2
请在您当前的环境中检查您的Python版本,确保它是Python3。

-2
sudo apt install python[2|3]-pip

pip2 install ws4py==0.3.2

我曾经面临过同样的情况,在上述操作之后,我的程序正常工作了,Ubuntu 16.04.6 amd64。


-6

解决方案(apt update && topgrade)


2
请阅读[答案]。如果有更多的上下文,这个答案会更有用。请注意,这个问题是关于macOS而不是Debian衍生版的。 - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接