我不知道这笔交易是什么,但我遇到了一些无处可寻的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
答案 0 :(得分:42)
我猜你有两个python安装,或两个pip安装,其中一个已被部分删除。
为什么使用sudo
?理想情况下,您应该能够从用户帐户安装和运行所有内容,而不是使用root。如果您将root和本地帐户混合在一起,则更有可能遇到权限问题(例如,请参阅有关“父目录不属于当前用户”的警告)。
如果你运行它会得到什么?
$ head -n1 /usr/local/bin/pip
这将显示哪个python二进制文件pip
正在尝试使用。如果它指向/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
可能是较早在PATH
上安装的pip的一部分。要对此进行测试,您可以尝试移动不起作用的pip
二进制文件(可能需要sudo
):
$ mv /usr/local/bin/pip /usr/local/bin/pip.old
然后再次尝试运行pip --version
命令。希望它能够获得正确的版本并成功运行。
答案 1 :(得分:38)
仅OSX及其变体中的解决方案。
ln -s /usr/local/bin/python /usr/local/opt/python/bin/python2.7
答案 2 :(得分:25)
我使用sudo为我的安装犯了同样的错误。 (糟糕)
brew install python
brew linkapps python
brew link --overwrite python
这使一切恢复正常。
答案 3 :(得分:23)
对于此错误:
~/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,因此它会失败,并显示相同的错误。
使自己摆脱混乱的方法:
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的相同问题,从而发现了此问题:
~/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发出相同的错误,请参见上文。
答案 4 :(得分:12)
我有类似的问题。基本上pip正在查找错误的路径(旧安装路径)或python。以下解决方案对我有用:
which python
)/usr/local/bin/pip2.7
和/usr/local/bin/pip
)。该行应该说明python路径的正确路径。在我的情况下,没有。我纠正了它,现在它工作正常。答案 5 :(得分:9)
如果它对任何人都有帮助,当pip在升级后停止工作时,这个问题中提到的解决方案对我有用:Pip broken after upgrading
以前缓存的位置发生变化时似乎是一个问题,因此您可以使用以下命令刷新缓存:
hash -r
答案 6 :(得分:8)
因为我在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
答案 7 :(得分: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)
答案 8 :(得分: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.
答案 9 :(得分:4)
我有同样的问题。我有Python 2.7&amp; 3.6安装。 Python 2.7有virtualenv
工作,但在安装Python3之后,virtualenv一直在寻找版本2.7并且无法找到它。
做pip install virtualenv
安装了virt3alenv的Python3版本。
然后,对于每个命令,如果我想使用Python2,我会使用virtualenv --python=python2.7 somecommand
答案 10 :(得分:1)
我遇到了同样的问题。如果我运行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
希望这有帮助。
答案 11 :(得分:1)
在我的情况下,我决定从我的mac中删除自制的python安装,因为我已经通过MacPorts在我的mac上安装了另外两个版本的python。这导致了错误消息。
通过brew重新安装python解决了我的问题。
答案 12 :(得分:1)
编辑此文件的第一行对我有用:
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
答案 13 :(得分:1)
您需要做的就是...关闭终端窗口,然后重新打开新窗口以解决此问题。
问题是,新的python路径未添加到bashrc中(无论是源代码还是新的终端窗口都可以)。
答案 14 :(得分: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
可行,这应该可行
答案 15 :(得分:0)
sudo /usr/bin/easy_install pip
这个命令对我有用
答案 16 :(得分:0)
您可能有两个不同版本的Python和pip。
尝试:
pip2 install --upgrade pip
然后是pip2 install -r requirements.txt
如果您使用的是Python新版本,则为pip3
。
答案 17 :(得分:0)
TLDR: pip
是符号链接,引用的位置不再包含可执行文件。您需要更新符号链接。
它有助于理解几件事。
python
或pip
之类的内容时,操作系统将搜索/etc/paths
来查找该命令的关联可执行文件。您可以使用cat /etc/paths
在那里看到所有内容。which
,您可以键入which python
或which pip
。这将告诉您外壳将用于该命令的可执行文件的位置。/etc/paths
包含/usr/local/bin
是很常见的,/usr/local/bin
也是一堆指向实际可执行文件的符号链接。不是可执行文件本身。bad interpreter: No such file or directory
的错误话虽这么说,问题可能在于pip
是一个符号链接,而链接的可执行文件可能不再存在于该位置。要解决此问题,请执行以下操作
which pip
(给出类似/usr/local/bin/pip
的内容)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
上(您遇到了这个问题,所以可能不存在)。rm -r /usr/local/bin/pip
pip
中使用homebrew
来查找实际的/usr/local/opt
可执行文件,则可以使用ls /usr/local/opt/ | grep python
之类的东西来找到它。ln -s /usr/local/opt/python@3.7/bin/pip3 /usr/local/bin/pip
答案 18 :(得分:0)
这个错误通常在每次有 iOS 升级时弹出。试试
xcode-select --install
这将安装最新的 xcode 版本并修复它