多版本Python共存及多版本pip管理终极教程

发布于 2021-06-06  777 次阅读


image.png

本文由这篇这篇以及这篇三篇文章整理而来

更新软件列表与软件

$ apt-get update
$ apt-get upgrade

update 是同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。

upgrade 是升级已安装的所有软件包,升级之后的版本就是本地索引里的,因此,在执行 upgrade 之前一定要执行 update, 这样安装的才是最新的版本

安装多版本python

 apt install python2.7 apt install python3.6
 $ apt install python3.8

将 python 各版本添加到 update-alternatives

$ which python3.8
/usr/bin/python3.8

$ update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1

$ which python3.6
/usr/bin/python3.6

$ update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2

$ which python2.7
/usr/bin/python2.7

$ update-alternatives --install /usr/bin/python python /usr/bin/python2.7

配置 python/python3 默认指向 python各版本

$ sudo update-alternatives --config python3


There are 2 choices for the alternative python3 (providing /usr/bin/python3).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /usr/bin/python3.6   2         auto mode
  1            /usr/bin/python3.6   2         manual mode
  2            /usr/bin/python3.8   1         manual mode

Press <enter> to keep the current choice[*], or type selection number: 2

测试python版本

$ python3 -V
Python 3.8.2

$ python3.6 -V
Python 3.6

$ python -V
Python 2.7

安装多版本pip

下载各pip

$ curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip3.py

安装pip

$ python3.8 get-pip3.py
$ python3.6 get-pip3.py
$ python2.7 get-pip.py

管理pip对应的Python版本

先查看各pip对应的Python版本

$ pip -V
$ pip2 -V
$ pip3 -V

转到下面目录

$ cd /usr/local/bin
$ ls -l

发现好多pip文件
用vim打开pip3

$vim pip3.py

里面大概是这样的

#!/usr/bin/python3.6

# -*- coding: utf-8 -*-
import re
import sys

from pip._internal import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

修改第一行的python3.6为python3.8保存退出
即为python3(文件名)对应python3.8(文件内容第一行)

其余文件同理

tips

需要注意的是,直接改这个脚本文件来修改pip对应的python版本的前提是:当前脚本文件对应的Python版本与要修改对应的Python版本的pip包版本最好一致,不一致很可能出错。最简单的解决办法是都升级为最新的pip版本。


Only Ctrl C - Ctrl V