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 自己摆脱困境的方法:
- 运行
which pip
- 在文本编辑器中打开该文件
- 将第一行从
#!/usr/local/opt/python/bin/python2.7
更改为例如#!/usr/local/opt/python2/bin/python2.7
(注意路径中的 python2),或您机器上工作的 python 解释器的任何路径。
- 现在,
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.
它有助于理解一些事情。
- 当您键入
python
或 pip
之类的内容时,您 os 将搜索 /etc/paths
以尝试找到该命令的关联可执行文件。您可以使用 cat /etc/paths
. 查看其中的所有内容
- 要确定您的 shell 将使用的可执行文件的位置,有一个方便的命令
which
,您可以键入 which python
或 which pip
。这将告诉您 shell 将用于该命令的可执行文件的位置。
- 这部分是关键。该位置可能是也可能不是实际的可执行文件,它可能是符号 link (symlink).
/etc/paths
包含/usr/local/bin
是很常见的,/usr/local/bin
也是实际可执行文件的一堆符号link也很常见。不是可执行文件本身。
- 如果 symlinks 引用位置的可执行文件不存在,您将收到类似
bad interpreter: No such file or directory
的错误
话虽如此,问题很可能是 pip
是一个 symlink 并且 linked 可执行文件可能不再存在于该位置。要修复它,请执行以下操作
- 找到可执行文件的位置 -
which pip
(给出这样的东西 /usr/local/bin/pip
)
- 检查 symlink 参考位置
ls -l /usr/local/bin/pip | grep pip
(给出这样的东西 pip -> /usr/local/opt/python@3.7/bin/pip3
)
- 检查引用位置是否存在可执行文件
ls /usr/local/opt/python@3.7/bin/pip3
(您遇到了这个问题,所以它可能不存在)。
- 删除旧符号link
rm -r /usr/local/bin/pip
- 找到实际的
pip
可执行文件,如果使用 homebrew
它将在 /usr/local/opt
中,您可以使用 ls /usr/local/opt/ | grep python
之类的东西找到它。
- 为 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
我不知道这是怎么回事,但我一直在遵循一些无处可去的 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 自己摆脱困境的方法:
- 运行
which pip
- 在文本编辑器中打开该文件
- 将第一行从
#!/usr/local/opt/python/bin/python2.7
更改为例如#!/usr/local/opt/python2/bin/python2.7
(注意路径中的 python2),或您机器上工作的 python 解释器的任何路径。 - 现在,
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 linkrm /bin/pip2.7
rm /bin/pip
然后用
重新linksudo 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.
它有助于理解一些事情。
- 当您键入
python
或pip
之类的内容时,您 os 将搜索/etc/paths
以尝试找到该命令的关联可执行文件。您可以使用cat /etc/paths
. 查看其中的所有内容
- 要确定您的 shell 将使用的可执行文件的位置,有一个方便的命令
which
,您可以键入which python
或which pip
。这将告诉您 shell 将用于该命令的可执行文件的位置。 - 这部分是关键。该位置可能是也可能不是实际的可执行文件,它可能是符号 link (symlink).
/etc/paths
包含/usr/local/bin
是很常见的,/usr/local/bin
也是实际可执行文件的一堆符号link也很常见。不是可执行文件本身。- 如果 symlinks 引用位置的可执行文件不存在,您将收到类似
bad interpreter: No such file or directory
的错误
话虽如此,问题很可能是 pip
是一个 symlink 并且 linked 可执行文件可能不再存在于该位置。要修复它,请执行以下操作
- 找到可执行文件的位置 -
which pip
(给出这样的东西/usr/local/bin/pip
) - 检查 symlink 参考位置
ls -l /usr/local/bin/pip | grep pip
(给出这样的东西pip -> /usr/local/opt/python@3.7/bin/pip3
) - 检查引用位置是否存在可执行文件
ls /usr/local/opt/python@3.7/bin/pip3
(您遇到了这个问题,所以它可能不存在)。 - 删除旧符号link
rm -r /usr/local/bin/pip
- 找到实际的
pip
可执行文件,如果使用homebrew
它将在/usr/local/opt
中,您可以使用ls /usr/local/opt/ | grep python
之类的东西找到它。 - 为 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