最近學習docker,採用了centos7.5系統,遇到了很多坑。其中之一就是在centos7.5系統中以yum安裝Python,其安裝路徑在/usr/lib和/usr/bin下。安裝在這下面有個很大問題就是沒法安裝setuptools和pip,而對於Python而言pip的重要性就如同yum之於centos。因此,這裏採用源碼編譯安裝的方式安裝python3.7。
安裝前的準備(各種依賴及工具安裝)
yum -y install gcc make
yum install libffi-devel
yum -y install zlib zlib-devel
yum -y install bzip2 bzip2-devel
yum -y install ncurses ncurses-devel
yum -y install readline readline-devel
yum -y install openssl openssl-devel
yum -y install openssl-static
yum -y install xz lzma xz-devel
yum -y install sqlite sqlite-devel
yum -y install gdbm gdbm-devel
yum -y install tk tk-devel以libressl代替openssl-devel
對於 Python3.7系統,openssl版本必須高於1.0.2或者libressl必須高於2.64版本。這裏以libressl代替系統的openssl,libressl獲取地址:https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/
這裏以libressl-2.8.0爲例,下載後解壓並進入目錄,然後分別運行以下命令:
./config --prefix=/usr/local/ssl
make & make install
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl擴展centos默認訪問庫,使可訪問libressl庫文件
cd /etc/ld.so.conf.d/
新建文件
vim libressl-2.8.0.conf
將以下行加入文件,並保存
/usr/local/ssl/lib運行命令使生效
ldconfig
編輯/etc/profile文件,新增如下環境變量
export LDFLAGS="-L/usr/local/ssl/lib"
export CPPFLAGS="-I/usr/local/ssl/include" //引號內第一個字母是大寫i
export PKG_CONFIG_PATH="/usr/local/ssl/lib/pkgconfig"編譯安裝python3.7
./configure --prefix=/usr/local --enable-shared CFLAGS=-fPIC //配置安裝目錄,使其安裝在/usr/local目錄下,這樣後面才能成功安裝setuptools和pip
make & make install
ln -s /usr/local/bin/python3.7 /usr/local/bin/python //創建快捷方式,是輸入python時默認打開python3.7解釋器,而不是系統默認的版本
擴展centos默認訪問庫,使可訪問python3.7的庫文件
cd /etc/ld.so.conf.d/
新建文件
vim python3.conf
將以下行加入文件,並保存
/usr/local/lib運行命令使生效
ldconfig