在os x上有一个奇怪的pip问题。
据我所知(并快速查看我的.bash_history似乎已确认)我没有对我的配置进行任何近期更改。唉,pip命令似乎突然使用了不同于以前的python版本。到目前为止,我使用命令pip来管理我的python2库,使用pip3来管理python3库。突然之间,任何运行pip安装的尝试都会失败,并且会出现错误,例如缺少打印语句周围的括号。
以下是我试图找出问题的一些命令的结果:
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)
所以出于某种原因,pip命令似乎是从PyPi2数据库运行但现在在python3中运行?任何想法如何解决这个问题?
答案 0 :(得分:14)
我运行多个Python版本,因此也有多个pip版本。
但是,每次更新pip时,您都会将标准pip
命令替换为您更新的版本。因此,即使pip3 install --upgrade pip
会在您的系统中放置/usr/local/bin/pip
,也会弄乱Python 2版本。
相反,我将pip作为(可执行)模块运行:
python3 -m pip search <package>
或
python2 -m pip search <package>
甚至
python3.5 -m pip search <package>
这可以保证您的pip
版本始终与您要使用它的Python版本相匹配。键入的时间稍长,但我更喜欢它的明确性(我猜,它遵循Python的禅宗)。
请注意更新pip:
python3.5 -m pip install --upgrade pip
仍将在/usr/local/bin/pip
中安装Python 3.5版本,但我只是忽略了这一点。只要注意直接执行pip
的(shell)脚本。
答案 1 :(得分:4)
我有完全相同的问题!
我通过brew for(var i=0; i<array1.length;i++){
array1[i].push(array2[i]);
}
重新安装后,brew reinstall python@2
有效!
答案 2 :(得分:2)
尝试通过在终端
中运行以下命令来设置别名alias pip="/usr/local/bin/pip"
alias pip2="/usr/local/bin/pip"
alias pip3="/usr/local/bin/pip3"
如果这样可以解决您的问题,那么您需要在bash配置文件中添加别名。 查看How do I create a Bash alias?了解更多信息。
或者,您必须先使用python2 get-pip.py
重新安装pip,然后python3 get-pip.py
可以在此处下载{-}}
答案 3 :(得分:0)
找到您想要使用的Python的绝对路径:
which python
打开默认的pip可执行脚本:
vi $(which pip)
你会在顶部看到一条shebang线,可能指向错误的Python(我曾经也是这样)。
指向您想要的Python(参见步骤1),例如:
#!/usr/local/bin/python3.7