本文主要介紹在CentOS7上通過源碼編譯的方式案頭Python3, 文中用到的是CentOS7.2, Python版本是3.6.7,其他類似版本的處理也是大致相同的.
在安裝Python3之前需要解決兩個問題:
- 一是 開發(fā)環(huán)境安裝,比如gcc等
- 二是 openssl的安裝, 因為CentOS自帶的openssl版本比較低,導(dǎo)致Python3安裝完后,在python命令行中執(zhí)行import ssl會報錯:ImportError: No module named _ssl。
特別是第二個ssl錯誤,相信很多人都遇到過,我自己也在這個問題上糾纏了很長時間, 現(xiàn)在將親測有效的解決方案分享給大家。
1.安裝開發(fā)環(huán)境依賴
sudo yum -y groupinstall development
sudo yum -y install zlib-devel
sudo yum -y install libffi-devel
2.更新openssl
先通過命令看看筷的openssl版本,如果返回是0.9.x, 那肯定需要升級了
openssl version
按照如下方式升級openssl
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安裝包
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位置
vi Modules/Setup.dist
搜索ssl, 取消以下幾行注釋, 并且修改SSL的值為我們實際安裝openssl的值, 即:/usr/local/openssl
_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
注: 網(wǎng)上很多說在./configure 后面加--with-openssl的方法來指定openssl的方法自測無效, 通過修改Setup.dist方才生效。
- 完成以上修改后,即可開始編譯Python3, 命令如下。
./configure
make
make install
4.驗證Python3
python3
import ssl
正常不會報錯, 則Python3安裝成功。
另外,給大家推薦一個Python虛擬環(huán)境的包pipenv, 強(qiáng)大又好用, 大家可以試試。
python3 -m pip install pipenv
至此,CentOS7上安裝Python3完畢。
這個是我參考的文章,感謝前人的分享!How to Compile and Install Python with OpenSSL Support?