前言:
从Python3.7开始,安装需要使用openssl 1.0.2及以上版本(如:1.1)。CentOS6.9默认安装的是openssl 1.0.1 故需要对openssl做版本升级。以下的Python编译及安装过程均基于CentOS6.9和Python3.7.2版本,敬请注意。
从源码开始编译安装Python3.7.2
1. 安装wget和yum-utils实用集合
sudo yum -y install wget
sudo yum -y install yum-utils
2. 安装编译工具
sudo yum -y install gcc gcc-c++
3. 安装依赖包
sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
3. 编译安装openssl 1.0.2
3.1. 查看当前安装的openssl版本号
openssl version -a
3.2. 安装依赖包
sudo yum install -y perl
sudo yum install -y zlib
3.3. 进入下载目录下载openssl 1.0.2r源码包
cd ~/download
wget https://www.openssl.org/source/openssl-1.0.2r.tar.gz
3.4. 解压openssl源码包
tar xvf openssl-1.0.2r.tar.gz
3.5. 进入解压后的目录
cd openssl-1.0.2r
3.6. 配置编译参数
./config shared zlib
3.7. 编译源码
make
3.8. 安装openssl 1.0.2 (默认安装目录在/usr/local/ssl下)
sudo make install
3.9. 备份CentOS6.9下原来的openssl 1.0.1(系统原始openssl的安装根目录在/usr下)
sudo mv /usr/bin/openssl /usr/bin/openssl.bak
sudo mv /usr/include/openssl /usr/include/openssl.bak
3.10. 为新安装的openssl 1.0.2 创建软链接
sudo ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
sudo ln -s /usr/local/ssl/include/openssl /usr/include/openssl
3.11. 查看新安装的openssl版本号
openssl version -a
3.12. 添加lib库自动搜索路径到/etc/ld.so.conf,然后ldconfig使设置生效,这样就不用每次export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH了。
sudo echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
sudo ldconfig
至此openssl 1.0.2安装完成。下面继续开始Python 3.7.2的编译和安装。
4. 创建并进入下载目录下载Python3.7.2源码包
mkdir pythonsrc
cd pythonsrc
wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
5. 解压Python3.7.2源码包
tar xvf Python-3.7.2.tgz
6. 进入解压后的Python3.7.2目录
cd Python-3.7.2
7. 配置Python3.7.2的安装目录和开关
./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/ssl --with-ssl-default-suites=openssl --enable-optimizations --enable-loadable-sqlite-extensions
8. 编译Python3.7.2
make
9. 安装Python3.7.2
nohup sudo make install &
10. 创建python3执行程序软链接
sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python3
11. 将/usr/local/python3/bin加入当前用户.bash_profile的PATH环境变量,增加sudo别名,在执行时传入PATH环境变量
vi ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/python3/bin
alias sudo='sudo env PATH=$PATH'
:wq
12. 生效环境变量
source ~/.bash_profile
13. 检查Python3及pip3版本
python3 -V
pip3 -V
至此CentOS6.9下从源码编译安装Python3.7.2完成。
P.S. 在上面第11步加入sudo别名一行的目的是解决sudo pip3 时报pip3 not found的错误。该错误的原因是编译sudo的时候加入了–with-secure-path 选项。
顺便做个广告,美国虚拟服务器提供商Vultr目前有不定期结束的新用户送50美元Credit的活动,送的Credit可用于租用Vultr的虚拟服务器。点击下面的链接进去注册新用户试试吧。Vultr有各种配置的虚拟服务器提供,按月收费,新手建议从低配置服务器开始,用他们送的Credit先练练手。