本文主要介绍在CentOS7上通过源码编译的方式案头Python3, 文中用到的是CentOS7.2, Python版本是3.6.7,其他类似版本的处理也是大致相同的.
在安装Python3之前需要解决两个问题:
- 一是 开发环境安装,比如gcc等
- 二是 openssl的安装, 因为CentOS自带的openssl版本比较低,导致Python3安装完后,在python命令行中执行import ssl会报错:ImportError: No module named _ssl。
特别是第二个ssl错误,相信很多人都遇到过,我自己也在这个问题上纠缠了很长时间, 现在将亲测有效的解决方案分享给大家。
1.安装开发环境依赖
sudo yum -y groupinstall development
sudo yum -y install zlib-devel
sudo yum -y install libffi-devel
2.更新openssl
先通过命令看看筷的openssl版本,如果返回是0.9.x, 那肯定需要升级了
openssl version
按照如下方式升级openssl
wget http://www.openssl.org/source/openssl-1.0.2e.tar.gz
tar xvzf openssl-1.0.2e.tar.gz
cd openssl-1.0.2e
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
make
make test
make install
到这openssl安装完成了, 接下来可以开始编译安装Python3了, 注意我们指定的openssl安装路径是在/usr/local/openssl, 这个后面要用到。
3.安装Python3
- 先下载解压Python3.6.7安装包
wget https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tgz
tar xvzf Python-3.6.7.tgz
cd Python-3.6.7
- 然后修改Setup.dist, 指定ssl位置
vi Modules/Setup.dist
搜索ssl, 取消以下几行注释, 并且修改SSL的值为我们实际安装openssl的值, 即:/usr/local/openssl
_socket socketmodule.c
# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
SSL=/usr/local/openssl
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
注: 网上很多说在./configure 后面加--with-openssl的方法来指定openssl的方法自测无效, 通过修改Setup.dist方才生效。
- 完成以上修改后,即可开始编译Python3, 命令如下。
./configure
make
make install
4.验证Python3
python3
import ssl
正常不会报错, 则Python3安装成功。
另外,给大家推荐一个Python虚拟环境的包pipenv, 强大又好用, 大家可以试试。
python3 -m pip install pipenv
至此,CentOS7上安装Python3完毕。
这个是我参考的文章,感谢前人的分享!How to Compile and Install Python with OpenSSL Support?
网友评论