本教程将教你如何在 Linux 环境下通过 Python 官方发布的源码安装包进行安装 Python 3.7 环境。本教程编写时(2018-04-10) Python 官网发布的 Python 3 最新版本为 3.7.3,本教程是在 CentOS 系统中测试安装的。其他 Linux 发行版应该也适用。

0x00 准备工作

首先需要通过安装一些依赖。

  1. CentOS 环境下
1
2
3
sudo yum -y install epel-release
sudo yum -y install axel
sudo yum -y install gcc openssl-devel bzip2-devel libffi-devel
  1. Ubuntu 环境下
1
sudo apt-get install -y axel make gcc g++ openssl bzip2 libffi-dev zlib1g-dev libssl-dev
  1. FreeBSD 环境下

虽然从严格意义上来说,FreeBSD 不应该算在 Linux,但这里顺便把 FreeBSD 下的也顺便说一下吧。

1
pkg install -y vim axel gcc openssl bzip2 libffi

0x01 下载 Python 源码包

本教程提供两种源码包的下载方式。(原因你懂的)

  1. 从官方下载
    访问 https://www.python.org/downloads/ 找到最新版的 Python 版本,本教程用的是 Python 3.7.3,点击相应的链接(本教程为 https://www.python.org/downloads/release/python-373/)。

继续往下翻,在 Files 中找到 XZ compressed source tarball,在链接上右键获取链接。

1
https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz

获得地址之后就可以通过 curl 进行下载了。并且为了防止出现其他文件名的干扰,也为了方便安装后清理无用的文件,本人比较习惯创建一个新的临时目录来进行接下来的操作。

1
2
3
4
5
6
7
8
9
10
11
12
[root@CentOS ~]# pwd
/root
[root@CentOS ~]# ls
anaconda-ks.cfg
mkdir tmp
[root@CentOS ~]# cd tmp
[root@CentOS tmp]# pwd
/root/tmp
[root@CentOS tmp]# curl https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz -o Python-3.7.3.tar.xz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
37 16.3M 37 6343k 0 0 37509 0 0:07:36 0:02:53 0:04:43 0

很明显,这里下载速度真的是辣眼睛,如果有足够的时间就慢慢等吧。

  1. 从笔者上传的地址下载。

访问网址: https://download.ismdeep.com/python/ 找到最新的 Python 3.7 版本.

1
https://download.ismdeep.com/python/Python-3.7.3.tar.xz
1
2
3
mkdir tmp
cd tmp
axel -n 20 https://download.ismdeep.com/python/Python-3.7.3.tar.xz

0x02 安装

接上面下载目录继续使用下面命令进行安装 Python.

1
2
3
4
5
6
xz -d Python-3.7.3.tar.xz
tar -xvf Python-3.7.3.tar
cd Python-3.7.3
./configure --prefix=/usr/local/python-3.7.3 --enable-optimizations
sudo make -j8 build_all
sudo make -j8 altinstall

至此,我们的 Python 3.7.3 就已经安装完毕了。

看到网上很多教程,在最后都会去 /usr/bin 目录下做软链接,个人不太喜欢弄这个,并不想去影响系统已有的环境。那么我们该怎么使用我们的 python 呢。我们可以通过绝对路径去调用 python 和 pip.

比如:

1
/usr/local/python-3.7.3/bin/pip3.7 install requests

1
/usr/local/python-3.7.3/bin/python3.7 main.py

0x03 后记

很明显,我们在国内环境下使用 pip 安装包,速度是很慢的,慢到有时候根本就不动了。嗨呀,没办法,我们只能配置国内镜像源来安装包了。

在用户目录下的 .pip/pip.conf 文件中加入以下代码,比如用户目录是 /root,则为 /root/.pip/pip.conf 如果 .pip 目录不存在,则需要自己手动创建,这里就不再赘述了:

1
2
3
4
[global]
index-url = https://mirrors.huaweicloud.com/repository/pypi/simple
trusted-host = mirrors.huaweicloud.com
timeout = 120

各个系统的 pip 配置文件不定相同:

Windows: C:\Users\xxxx\pip\pip.ini (xxxx 表示用户名)

Linux: ~/.pip/pip.conf