Centos Python最新安装步骤

最近更新时间 2020-03-18 19:41:46

Python预装在大多数Linux发行版上,并作为一个包提供给所有其他用户。 您可能想要使用最新发行版。这时您可以从源代码轻松编译最新版本的Python。

Linux中直接安装

FreeBSD用户,使用以下命令添加包: 

pkg install python3

OpenBSD用户,使用以下命令添加包: 

pkg_add -r python
pkg_add ftp://ftp.openbsd.org/pub/OpenBSD/4.2/packages/<insert your architecture here>/python-<version>.tgz
例如:i386用户获取Python 3.8的可用版本
pkg_add ftp://ftp.openbsd.org/pub/OpenBSD/4.2/packages/i386/python-2.5.1p2.tgz

Centos用户,使用以下命令安装: 

yum install python

源码安装Python3

1. 下载最新版本Python3,下载地址:https://www.python.org/downloads/source/

wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz

2. 验证解压压缩包,MD5值可以从官方下载页面获取。

文件MD5校验
echo 'f215fa2f55a78de739c1787ec56b2bcd Python-3.8.1.tgz' | md5sum -c
Python-3.8.1.tgz: OK
tar zxf Python-3.8.1.tgz
cd Python-3.8.1

3. 编译安装Python3。

如果系统中没有安装 zlib 和 openssl,后面的安装会报错,确保系统中已经安装了开发包。

libffi-devel 解决 _ctypes 的问题

dnf install openssl-devel zlib-devel libffi-devel
./configure
make
make altinstall

如果需要启动性能优化,可以添加 --enable-optimizations 参数,加上这个 flag 后性能有 10% 左右的优化。如果gcc版本太低会报错,参见常见错误。

make installmake altinstall的差别,参见:make install

出现如下信息表示安装成功:

Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-19.2.3 setuptools-41.2.0

4. 创建软链。

Centos系统中Python默认安装在/usr/local/bin目录,可通过下面命令查看是否安装成功:

ll /usr/local/bin|grep python
-rwxr-xr-x... python3.8
-rwxr-xr-x... python3.8-config

建立软链添加到/usr/bin目录。

ln -s /usr/local/bin/python3.8 /usr/bin/python3
ln -s /usr/local/bin/pip3.8 /usr/bin/pip3
查看Python3版本
python3 --version
Python 3.8.1

脚本中使用Python3

要在Unix上使用Python脚本,需要添加可执行权限,例如:

chmod +x script

并在脚本的顶部放置一个合适的Shebang线。一个很好的选择通常是:

#!/usr/bin/env python3

常见问题

Could not import runpy module

如果带有--enable-optimizations参数,gcc版本太低会出现如上问题,gcc 8.1.0版本后解决了这个问题。最好把Python-3.8.1目录删除后重新解压编译。

zipimport.ZipImportError: can't decompress data; zlib not available

没有安装 zlib。

Can't connect to HTTPS URL because the SSL module is not available

没有安装 OpenSSL。

Failed to build these modules: _ctypes

安装 dnf install libffi-devel。

rss_feed