同一台机器安装多个python3版本实现pip3共存
2018-09-05 本文已影响0人
陆_志东
对于兼容问题,最好给python 命令行加不同的后缀,比如python3.4 python3.7
这样调用不同版本的python就不会有问题
同理实现不同版本python的pip共存类似解决方案
如果电脑上已经有了py3.4, 再安装py3.7 使用py3.7 利用pip3 install安装的时候就有可能把包装到了py3.4里面,造成py3.7无法使用,解决方案就是再安装一个pip(源码方式安装) 解析pip的时候用py3.7 去解析,并给pip 命名为pip3.7,这样pip3就是将包安装到3.4里面 pip3.7就是将包安装到3.7里面 从而实现pip共存
具体步骤:
如果你linux系统已经安装了一个Python版本,楼主这里已经安装了Python3.4
安装完之后默认会在/usr/local/bin 或 /usr/bin 或/usr/sbin/ 或 /usr/local/sbin 或/sbin 或 /bin 或 /root/bin下创建一个python3的引用
上面列出的文件夹是linux找寻可执行文件的路径.
python源码安装的时候执行配置语句的时候会执行./configure --prefix path 指定安装到哪个目录.
如果你不知道安装到了哪个路径下,使用which命令
下面是楼主的电脑执行过程:
which python3
>>/usr/bin/python3
cd /usr/bin/
ll python3*
>>python3 -> /usr/local/python34/bin/python3 # 这里是python3.4的引用指向
mv python3 python3.4 # 修改引用的调用名
which pip3
>>/usr/bin/pip3
mv pip3 pip3.4 # 修改python3.4 对应的pip引用
上面是老版本的配置,配置完成后安装其他的python版本,这里以python3.7示例
cd ~
wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tar.xz
tar xvf Python-3.6.6.tar.xz
cd Python-3.6.6
./configure --prefix=/usr/local/python36 --with-ssl # 很重要,ssl必须要加否则无法使用ssl
# prefix 指定安装路径,若不指定配置文件会安装在/usr/local/etc下,库文件会安装在/usr/local/lib下,可执行文件安装在/usr/local/bin下,
#指定路径之后所有的文件都会安装在指定的目录下
yum install -y libffi libffi-devel # python3.6需要的新增依赖
yum install openssl zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
make # 执行编译,如果编译失败安装make需要包,
# centos 执行 yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
# 如果是Ubuntu,执行apt-get install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
make install # 安装
cd /usr/bin/
ll python* # 如果没有python3.6的引用,输入python3也进不去交互式,切换到配置的目录下
cd /usr/local/python36/bin
ll python3.6
>>-rwxr-xr-x. 2 root root 10979373 Sep 10 09:17 python3.6
ln -s /usr/local/python36/bin/python3.6 /usr/bin/python3.6
ln -s /usr/local/python36/bin/pip3.6 /usr/bin/pip3.6
注意:
千万不要用python3.7
,大坑一个,因为3.7不支持1.0版本的ssl,然后安装就会出现很多的问题
如果就是要用python3.7
,请看我另外一篇文章,先升级openssl
,请点击