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