CentOS7 安装Python3

CentOS7 安装Python3


本文主要介绍在CentOS7上通过源码编译的方式案头Python3, 文中用到的是CentOS7.2, Python版本是3.6.7,其他类似版本的处理也是大致相同的.

在安装Python3之前需要解决两个问题:

  • 一是 开发环境安装,比如gcc等
  • 二是 openssl的安装, 因为CentOS自带的openssl版本比较低,导致Python3安装完后,在python命令行中执行import ssl会报错:ImportError: No module named _ssl。

特别是第二个ssl错误,相信很多人都遇到过,我自己也在这个问题上纠缠了很长时间, 现在将亲测有效的解决方案分享给大家。

1.安装开发环境依赖

1
2
3
sudo yum -y groupinstall development
sudo yum -y install zlib-devel
sudo yum -y install libffi-devel

2.更新openssl

先通过命令看看筷的openssl版本,如果返回是0.9.x, 那肯定需要升级了

1
openssl version

按照如下方式升级openssl

1
2
3
4
5
6
7
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安装包

    1
    2
    3
    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位置

    1
    vi Modules/Setup.dist

    搜索ssl, 取消以下几行注释, 并且修改SSL的值为我们实际安装openssl的值, 即:/usr/local/openssl

    1
    2
    3
    4
    5
    6
    7
    8
    _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, 命令如下。

    1
    2
    3
    ./configure
    make
    make install

4.验证Python3

1
2
python3
import ssl

正常不会报错, 则Python3安装成功。
另外,给大家推荐一个Python虚拟环境的包pipenv, 强大又好用, 大家可以试试。

1
python3 -m pip install pipenv

至此,CentOS7上安装Python3完毕。
这个是我参考的文章,感谢前人的分享!How to Compile and Install Python with OpenSSL Support?

作者

Amazing Coder

发布于

2020-06-08

更新于

2020-10-08

许可协议

评论