目錄
第一步:下載下傳安裝包
第二步:執行安裝
1、建立存放目錄
2、運作腳本configure
3、make編譯make install安裝
4、最後運作make clean
第三步:建立軟連接配接
總結安裝過程
總結報錯解決
第一步:下載下傳安裝包
# 下載下傳位址:https://www.python.org/ftp/python/
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
tar -xzvf Python-3.7.1.tgz
第二步:執行安裝
1、建立存放目錄
mkdir /usr/local/python3
2、運作腳本configure
configure是一個shell腳本,根據平台的特性生成Makefile檔案,為下一步的編譯做準備。可以通過在 configure 後加上參數來對安裝進行控制,比如下面就是指定安裝目錄/usr/local/python3。如果沒有用這個選項,安裝過程結束後,該軟體所需的軟體被複制到不同的系統目錄下,比較混亂。
例如我們執行如下指令:
cd Python-3.7.1
./configure --prefix=/usr/local/python3 --with-ssl
"--enable-optimizations"這個參數會啟用配置檔案引導的優化(PGO)和連結時間優化(LTO)。兩者都是昂貴的優化,會減慢建構過程,但會顯着提高速度(我記得閱讀的内容大約有10-20%)。
./configure --enable-optimizations --prefix=/usr/local/python3
可以通過 ./configure --help 檢視詳細的說明幫助。
3、make編譯make install安裝
※如果有需要,會進行 make depend(一種makefile的規則,通過掃描一個目錄下的所有C\C++ 代碼,進而判斷出檔案之間的依賴關系,如a.cc檔案中調用了b.h(如以形勢include<b.h>),如果之後a.cc檔案被改動,那麼隻需要重新編譯a.cc檔案,不需要編譯b.h檔案。否則所有的檔案都需要重新編譯)
從Makefile中讀取指令,根據makefile制定的規則,将c\c++檔案編譯成*.o檔案,然後進一步生成可執行檔案。大多數的源代碼包都經過這一步進行編譯,(當然有些perl或python編寫的軟體需要調用perl或python來進行編譯)。
make && make altinstall
注意:如果 在make過程中出現 error ,你就要記下錯誤代碼(注意不僅僅是最後一行),然後你可以向開發者送出 bugreport(一般在 INSTALL 裡有送出位址),或者你的系統少了一些依賴庫等,這些需要自己仔細研究錯誤代碼。
4、最後運作make clean
删除一些臨時檔案(删除源代碼(C\C++ code)生成的執行檔案和所有的中間目标檔案)
第三步:建立軟連接配接
[[email protected] local] ln -s /usr/local/python3/bin/python3 /usr/bin/python3
[[email protected] local] ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
最後運作python3檢視是否安裝成功
[[email protected] local] python3
總結安裝過程
絕大數開源軟體都是公布源代碼的,源代碼一般被打包為tar.gz歸檔壓縮檔案,然後手工編譯為二進制可執行檔案
./configure # 檢查編譯環境/相關庫檔案/配置參數,生成makefile
make # 對源代碼進行編譯,生成可執行檔案
make install # 将生成的可執行檔案安裝到目前計算機中特點;
相容性好/可控制性好/開源軟體會大量使用其他開源軟體的功能,要解決大量的依賴關系
總結報錯解決
問題一:安裝時報錯ModuleNotFoundError: No module named '_ctypes'的解決辦法
1、執行如下指令:
yum install libffi-devel
2、從"./configure ..."重新安裝
問題二:pip3 install時報錯“pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.”
先安裝openssl-dev,然後重新編譯安裝,隻是在編譯的過程中加入
--enable-optimizations
ubuntu:
sudo apt-get install libffi-dev
或者
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus
sudo apt-get install build-essential libncursesw5-dev libgdbm-dev libc6-dev
sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev
sudo apt-get install libssl-dev openssl
sudo apt-get install libffi-dev
centos7
yum install libffi-devel -y