Halo

A magic place for coding

0%

腾讯云服务器配置Python3环境

Introduction

  2020年python核心团队宣布将停止对Python2的维护了,那么在这篇博客我就和大家分享一下如何把自己的云端服务器的python环境升级到Python3.

  • 服务器环境:Centos7.3
  • 目标Python版本:Python3.6.5

Steps

  1. 首先检查是否有gcc的编译环境,因为后面python的安装需要用到,如果gcc命令没有成功,则安装gcc。

    1
    yum install gcc
  2. 从python官网下载python3的文件,有人觉得服务器中下载太慢,可以选择本地下载好后scp到远程服务器。这里我是直接在服务器中下载的,时间大约为10分钟。

    1
    curl -O https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
  3. 下载好文件后,解压。

    1
    tar -zxvf Python-3.6.5.tgz
  4. 此时,可以看到目录下多出来Python-3.6.5.tgz的文件夹。进入文件夹。

  5. 创建python3目录,用于放置安装的文件。

    1
    mkdir /usr/local/python3
  6. 执行配置命令和安装程序

    1
    2
    3
    ./configure --prefix=/usr/local/python3
    make
    make install

    这有可能报错zipimport.ZipImportError: can’t decompress data; zlib not available,解决办法为:

    1
    2
    3
    cd Modules/zlib
    ./configure
    make install

    再重新执行make install

  7. 添加环境变量

    1
    vi /etc/profile

    在文件夹添加一行:

    1
    PATH=/usr/local/python3/bin:$PATH

    然后保存退出,让配置生效

    1
    source /etc/profile

至此,我们可以输入python3,就能看到python3.6.5已经成功安装了。此时系统中有两个版本的python。

python2和python3共存

  我们想在系统中同时保留两个版本的python,而平时用的比较多的是python3,每次输入命令不想输入python3,而是希望直接输入python就进入python3的版本。

  这里我采用的是别名的方式去解决这个问题。首先通过which命令找到python2和python3的位置。

1
2
which python2
which python3

use which to find python path

  然后编辑~/.bashrc文件添加一下内容:

1
2
3
alias python2='/usr/bin/python2'
alias python3='/usr/local/python3/bin/python3'
alias python=python3

  然后保存退出,更新配置:

1
source ~/.bashrc

  再次输入python --version,显示的就是python3.6.5版本了。如果想用python2,直接输入python2即可。

SSL包缺失

  因为centos7默认的openssl版本过低,或者服务器本身就缺失这个包,所以当用到了网络访问的时候(比如数据库),就会报错ImportError: No module named _ssl。这个时候我们需要手动安装openssl包,然后重新编译python3.

  1. 安装openssl

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # Download SSL package
    wget https://www.openssl.org/source/openssl-1.0.2o.tar.gz
    tar -zvxf openssl-1.0.2o.tar.gz
    cd openssll-1.0.2o

    # compile and install openssl
    ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
    make
    make install
  2. 重新编译Python,先修改编译文件

    1
    vi Python-3.6.5/Modules/Setup.dist

    找到一下部分并修改为:

    1
    2
    3
    4
    5
    6
    # 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

    SSL指向刚刚openssl安装的路径

    然后重新安装python

    1
    2
    3
    ./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl
    make
    make install

    至此,我们重新打开python,输入import ssl就可以使用了。

  本次分享到这里结束了,希望本文能对你有帮助。欢迎评论、转发,谢谢您的支持!

Welcome to my other publishing channels