Linux下安裝Python3.8
一、文件下載
https://www.python.org/downloads/release/python-380/
下載Python-3.8.0.tgz
文件
$ tar -zxvf Python-3.8.0.tgz
二、安裝必要環境
首先安裝一些必要的庫。
$ yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
$ yum install libffi-devel -y
如果服務器中同時存在多個Python版本,yum可能會報一些語法錯誤,這時只要指定運行版本即可,在下面三個文件中都將! /usr/bin/python
改成! /usr/bin/python2.7
$ vim /usr/libexec/urlgrabber-ext-down
$ vim /usr/bin/yum-config-manager
$ vim /usr/bin/yum
三、安裝Python3
首先配置安裝路徑,這樣Python所有資源文件都會集中在這裏,之後要卸載也方便。
$ make clean
$ ./configure prefix=usr/local/python3
然後編譯並安裝
$ make -j4 && make install
最後配置環境和軟連接,這樣以後直接敲python
就是新安裝的版本。
$ sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python3
$ rm /usr/bin/python
$ sudo ln -s /usr/local/python3 /usr/bin/python
四、卸載
由於安裝時指定了prefix
,直接刪除即可
$ rm -r /usr/local/python3
如果忘記了當初設的prefix
是什麼,而安裝包目錄還保存着,可以這樣查看
$ cd /usr/local/python3/Install_Package/Python-3.8.0
$ cat config.log | grep 'prefix='
五、pip3
創建軟鏈接
$ rm /usr/bin/pip3
$ sudo ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
六、pip3的SSL問題
在使用pip3
安裝庫的時候,報了個Warning:
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available。
原因是處於安全考慮,要求openssl
版本至少爲1.0.2
查看服務器上openssl
版本,發現當前版本是1.0.1
$ openssl version -a
6.1 安裝最新的openssl並配好環境
$ wget http://www.openssl.org/source/openssl-1.0.2j.tar.gz
$ tar -xzf openssl-1.0.2j.tar.gz
$ cd openssl-1.0.2j
$ ./config --prefix=/usr/local/openssl
然而現在默認版本還是1.0.1
,需要手動更改軟鏈接
$ mv /usr/bin/openssl /usr/bin/openssl1.0.1
$ sudo ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl1.0.2
$ sudo ln -s /usr/bin/openssl1.0.2/ /usr/bin/openssl
6.2 更改Python3編譯配置
在Python3的安裝包路徑下,首先找到./Module/Setup
,修改下面的部分,SSL
改成新版本openssl
的安裝路徑。
SSL=/usr/local/openssl
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
然後配置並編譯安裝,這次帶上 --with-ssl
$ ./configure --prefix=/usr/local/python3 --with-ssl
$ make -j4 && make install
七、某些庫的問題
如果在安裝Python3之前沒有安裝第二步的必要環境,import某些庫就可能報錯。
例如numpy: No module named '_ctypes'
、pandas: no module named bz2
等。
解決方法是按第二步安裝好,然後重新編譯安裝Python3。