修改系统中的 python 版本

问题

ubuntu 系统中可能存在多个 python 版本。例如在我的 ubuntu 16.04 系统中,通过命令

ls /usr/bin/python*

可以看到有 python2.7, python3.5 等可执行文件,还有一些链接文件。

在 terminal 中输入 python,默认使用 python2,如何让系统默认使用 python3?

解决方案 1: 简单替换 python 命令指向的可执行文件

在用户 home 目录下的 .bashrc 文件最后添加如下命令

alias python='/usr/bin/python3.5'

上边的 python3.5 是我自己机子中的 python3 版本,读者要先用文章开头的那个命令确认一下自己机子上的 python 版本号,再对应的设置上述命令。
设置好了 .bashrc 之后,更新一下

source ~/.bashrc

此时在 terminal 中输入 python ,就可以启动 python3 了。

这种方式实际上只是一种“障眼法”,在terminal 中输入 python ,实际上是等价于输入 /usr/bin/python3.5,这里的 python 只不过是 /usr/bin/python3.5 的别名 (alias).

解决方案 2:用 update-alternatives 命令

为了彻底改变系统中默认使用的 python 版本,可以用 update-alternatives 命令。
首先查看一下目前系统中是否已经设置了 python 的 alternatives,用如下命令:

update-alternatives --list python

如果报错

update-alternatives: error: no alternatives for python

说明之前没有设置过。可以用如下方法设置

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2

注意上述命令中最后的数值 1 和 2. 数值越大,优先级越高。
上述命令中 --install 后边的四个参数依次对应 <link> <name> <path> <priority>。通过这两个命令,就将 python 与两个可执行文件 (/usr/bin/python2.7 和 /usr/bin/python3.5)对应了起来,而且默认使用 /usr/bin/python3.5。

此时,再通过命令查看一下

update-alternatives --list python

会看到 python 的两个 alternatives

/usr/bin/python2.7
/usr/bin/python3.5

要设置 python 的版本,可以用命令

sudo update-alternatives --config python

会显示如下列表


python_version1.png

这里就可以选择系统默认使用的 python 版本了。默认是优先级较高的 python3.5,如果选择 1, 则会切换到 python 2.7.

升级系统 python 版本

ubuntu 16.04 自带了 python 2.7 和 python 3.5。有些比较新的程序需要使用 3.6 以上版本。
以 python 3.6 版本为例,安装方式如下:(参考)

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.6 python3.6-dev

此时系统中就有了 python 3.6 版本,可以查看 /usr/bin 文件夹是否有 python3.6,另外安装了python3.6-dev 之后还会在 /usr/includes 文件夹中出现 python3.6。

为了切换方便,也可以将 3.6 版本加入到上述切换系统中

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 3

不同版本之间的切换过程与前边类似。

以上操作都是针对 ubuntu 16.04 系统。在 ubuntu 18.04 系统中,只有 python3.6 版本。如果要添加 python2.7,可以用如下命令:

sudo apt install python2.7 

安装之后,系统默认 python 版本为 2.7。如果要调整版本,可以参考上边的步骤。

安装 pip 及升级

python 默认不带 pip,需要另外安装。可以用 apt install 方式安装:

sudo apt install python-pip python3-pip

但是这样安装的 pip 版本比较旧。在后续使用 pip 安装 module 的时候经常会见到如下提示:

You are using pip version 9.1.1, however version 19.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

但是用 pip install --upgrade pip 升级几乎总是失败。

尝试过最靠谱的安装方式是通过 pypi 官网提供的 get-pip.py 文件安装。
地址:https://pip.pypa.io/en/stable/installing/#installing-with-get-pip-py
基本步骤如下:

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

python get-pip.py

如果提示版本不匹配,可以根据提示信息下载新的版本并安装。

另外,为了提高 pip 下载 python package 的速度,可以设置 pip 使用国内的数据源,例如采用清华的源

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

总结

本文简单介绍了修改系统 python 版本的方法。但是要提醒读者,尽量不要改动系统的 python 默认版本,以免出现莫名其妙的问题,例如有些 python package 是在 python 2 中安装的,切换到 python 3 之后就找不到对应的 package 了。如果必须要使用某个版本的 python,最好创建 python 虚拟环境,在虚拟环境中指定 python 版本,这样比较安全,不会影响到虚拟环境之外的 python 设置。关于如何创建 python 虚拟环境,可以参考本博客中另一篇文章

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,417评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,921评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,850评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,945评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,069评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,188评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,239评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,994评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,409评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,735评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,898评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,578评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,205评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,916评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,156评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,722评论 2 363
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,781评论 2 351

推荐阅读更多精彩内容