Pip突然使用了错误版本的Python

jcm*_*r11 10 python macos pip

在os x上有一个奇怪的问题.

据我所知(并快速查看我的.bash_history似乎证实)我没有对我的配置进行任何近期更改.唉,pip命令似乎突然使用了不同于以前的python版本.到目前为止,我使用命令pip来管理我的python2库,使用pip3来管理python3库.突然,任何运行pip安装的尝试都会失败,并且会出现错误,例如缺少print语句的括号.

以下是我试图找出问题的一些命令的结果:

which pip > /usr/local/bin/pip

which pip3 > /usr/local/bin/pip3

which python > /usr/local/bin/python

python version > Python 2.7.11

pip --version > pip 8.1.1 from /usr/local/lib/python3.5/site-packages (python 3.5)
Run Code Online (Sandbox Code Playgroud)

所以出于某种原因,pip命令似乎是从PyPi2数据库运行但现在在python3中运行?任何想法如何解决这一问题?

小智 18

我运行多个Python版本,因此也有多个pip版本.

但是,每次更新pip时,都会将标准pip命令替换为您更新的版本.因此,甚至pip3 install --upgrade pip/usr/local/bin/pip在你的系统中放入一个搞乱Python 2版本的东西.

相反,我将pip作为(可执行)模块运行:

python3 -m pip search <package>
Run Code Online (Sandbox Code Playgroud)

要么

python2 -m pip search <package>
Run Code Online (Sandbox Code Playgroud)

甚至

python3.5 -m pip search <package>
Run Code Online (Sandbox Code Playgroud)

这可以保证您的pip版本始终与您要使用它的Python版本相匹配.键入的时间稍长,但我更喜欢它的明确性(我猜,它遵循Python的禅宗).

请注意更新pip:

python3.5 -m pip install --upgrade pip
Run Code Online (Sandbox Code Playgroud)

仍然会安装Python 3.5版本/usr/local/bin/pip,但我只是忽略了这一点.只要注意pip直接执行的(shell)脚本.


Dmi*_*rev 7

找到你想使用的 Python 的绝对路径:

which python
Run Code Online (Sandbox Code Playgroud)

打开默认的 pip 可执行脚本:

vi $(which pip)
Run Code Online (Sandbox Code Playgroud)

你会在顶部看到一条 shebang 线,它可能指向错误的 Python(我也有过一次)。

指向您想要的 Python(参见步骤 1),例如:

#!/usr/local/bin/python3.7
Run Code Online (Sandbox Code Playgroud)


ale*_*inn 4

尝试通过在终端中运行以下命令来设置别名,

alias pip="/usr/local/bin/pip"
alias pip2="/usr/local/bin/pip"
alias pip3="/usr/local/bin/pip3"
Run Code Online (Sandbox Code Playgroud)

如果这解决了您的问题,那么您需要在 bash 配置文件中添加别名。查看如何创建 Bash 别名?了解更多信息。

或者,您必须python2 get-pip.py先使用 pip 重新安装,然后python3 get-pip.py可以在此处下载 get-pip.py https://bootstrap.pypa.io/get-pip.py