python2和3不兼容的问题:
在linux系统里,通过源码包*tgz安装的python2版本不自带pip,但是python3版本自带pip
我安装一个numpy库,版本是1.20.3(使用python3带的pip安装的)
用python2调用这个库,看,报错了:
用python3调用这个库,就没报错:
眼前的问题:
python2支持的numpy版本有1.13.3,但是python3的pip3安装不了这个版本!我需要使用要python2运行的脚本pyseer,需要用到numpy等库。现在,python2要如何安装模块,这是个问题。
问题的解决:
有些文章里提到的解决方法是下载脚本get-pip.py安装pip2
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python get-pip.py
但是,报错了(我仔细看半天,完全搞不懂),所以这个方法走不通。
找到文章里说,python2支持的最后一个pip版本是20.3.4,我后来找到了一片文章里提到pip3安装pip2的,抱着试一试的心态,写了下面的命令,没想到成功装上了!
pip3 install pip==20.3.4 --target /usr/local/python2.7/lib/python2.7/site-packages
这里将20.3.4版pip(pip2)装到我下载的python2.7的site-packages里(编译安装后里面只有一个README文本)
在.bashrc里将$PYTHONPATH变量进行修改,将python2.7下的site-packages调到原有的python3.9的site-packages前,不然会调用成原先的python3的pip(pip3)!
python2调用pip3也是报错(哇~)
将pip2(20.3.4版pip)作为第一调用的模块,运行命令:
python2 -m pip install numpy==1.13.1 --target=/usr/local/python2.7/lib/python2.7/site-packages
总算是给python2装上了numpy
关于调用pip2老是调用到pip3的模块的问题:
由于环境变量是$PYTHONPATH是这种类型:
python3=/usr/local/python3.9/lib/python3.9/site-packages/
python2=/usr/local/python2.7/lib/python2.7/site-packages/
export $PYTHONPATH=${python3}:${python2}:$PYTHONPATH
所以将Python2的pip软连接为/usr/bin/pip2还是会调用到Python3里的pip模块。
问题解决:
修改python2.7所在位置的pip2.7文件的代码,这样就不会调错模块了
#添加如下的内容:
import sys
sys.path[0]="/usr/local/python2.7/lib/python2.7/site-packages/"
#在最后加上:
del sys.path[0]
最后输入命令检查pip版本:
#查看pip2.7的版本是否对上号:
pip2 -V
#查看pip3.9版本:
pip3 -V