國(guó)產(chǎn)化設(shè)備鯤鵬CentOS7上源碼安裝Python3.7的過(guò)程詳解
具體編譯過(guò)成與正常的Python源代碼在x86平臺(tái)上的過(guò)程無(wú)異,此篇隨筆僅當(dāng)用作復(fù)制黏貼的備忘錄。不得不說(shuō)在一個(gè)老舊系統(tǒng)上安裝一個(gè)老舊的Python版本,從頭編譯一個(gè)Python還是一個(gè)較為穩(wěn)健的選擇。
獲取源代碼
Python官網(wǎng)處下載所需源碼版本[https://www.python.org/downloads/source/]
curl -O https://www.python.org/ftp/python/3.7.13/Python-3.7.13.tgz
準(zhǔn)備工作(安裝依賴)
其實(shí)依賴不裝全也是能夠順利編譯完成的,只不過(guò)在make階段會(huì)放棄部分組件的構(gòu)建如壓縮算法和ssl,tk一類的組件,但是有條件還是建議裝全咯。
yum install -y gcc make yum install -y openssl openssl-devel openssl-static bzip2 bzip2-devel ncurses ncurses-devel readline readline-devel xz lzma xz-devel sqlite sqlite-devel gdbm gdbm-devel expat-devel tk tk-devel tcl tcl-devel libffi libffi-devel
生成Makefile
這邊主要注意下幾個(gè)參數(shù),--enable-shared生成動(dòng)態(tài)依賴庫(kù)(非必要),--prefix 指定Python安裝目錄(務(wù)必指定,尤其在有多個(gè)python環(huán)境下的時(shí)候,你也不想覆蓋了系統(tǒng)自帶的Python導(dǎo)致系統(tǒng)組件如yum一類的掛掉),--enable-optimizations(優(yōu)化參數(shù)非必要)。還有就是,如果你的openssl安裝到了其他目錄或是有多openssl的環(huán)境請(qǐng)使用--with-openssl=DIR指定你使用的openssl版本,這在低版本操作系統(tǒng)下構(gòu)建高版本python時(shí)非常重要,已centos7為例子它自帶的openssl-1.0.2不足以用于構(gòu)建Python3.10(python3.10需要openssl 1.1.1以上),但是貿(mào)然的修稿系統(tǒng)的openssl版本會(huì)導(dǎo)致其余依賴程序的崩潰,所以你只能在特定目錄下安裝openssl并使用。
# 解壓源碼包 tar zxvf Python-3.7.13.tgz && cd Python-3.7.13 # 生成Makefile ./configure --enable-shared --prefix=/usr/local/python3.7 --enable-optimizations
構(gòu)建&&安裝
有一說(shuō)一在鯤鵬這種主頻較低的cpu上編譯著實(shí)挺慢的
make && make install
添加環(huán)境變量
echo 'export PATH="$PATH:/usr/local/python3.7.3/bin"' >> /etc/profile
其他小問(wèn)題
找不到libpython3.7m.so.1.0
[root@localhost Python-3.7.13]# python3 python3: error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory
把libpython3.7m.so.1.0放到系統(tǒng)能找到的地方便是
# 在編譯的目錄下 cp -f libpython3.7m.so.1.0 /lib64
升級(jí)pip上的小坑
如果你要保證在多python環(huán)境下(python2和python3共存)下升級(jí)pip,建議使用
curl https://bootstrap.pypa.io/get-pip.py | python3
來(lái)升級(jí),已保證升級(jí)過(guò)程不會(huì)錯(cuò)誤的調(diào)用python2
影響pyinstaller打包后python程序移植性的因素
除了cpu的架構(gòu),操作系統(tǒng)位數(shù)以外不談(這些太容易被注意了),指的注意的是glib版本。如果你的編譯環(huán)境有升級(jí)內(nèi)核的行為導(dǎo)致glibc版本被改變了,高版本的打包后程序是無(wú)法在低版本的glibc系統(tǒng)上運(yùn)行的(反過(guò)來(lái)沒(méi)問(wèn)題)。所以如果想讓打包的程序在盡可能多的操作系統(tǒng)上運(yùn)行請(qǐng)?jiān)诘桶姹镜膅libc上構(gòu)建你的程序,這邊有一個(gè)建議的組合centos5.8+python3.6.1,應(yīng)該是一個(gè)較為極限的組合了,glibc版本2.5。 你要問(wèn)咋看?ldd --version一下就成。
到此這篇關(guān)于國(guó)產(chǎn)化設(shè)備鯤鵬CentOS7上源碼安裝Python3.7的文章就介紹到這了,更多相關(guān)CentOS7源碼安裝Python3.7內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談anaconda python 版本對(duì)應(yīng)關(guān)系
這篇文章主要介紹了淺談anaconda python 版本對(duì)應(yīng)關(guān)系,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10Python函數(shù)式編程模塊functools的使用與實(shí)踐
本文主要介紹了Python函數(shù)式編程模塊functools的使用與實(shí)踐,教你如何使用?functools.partial、functools.wraps、functools.lru_cache?和?functools.reduce,感興趣的可以了解一下2024-03-03python獲取時(shí)間戳的實(shí)現(xiàn)示例(10位和13位)
這篇文章主要介紹了python獲取時(shí)間戳的實(shí)現(xiàn)示例(10位和13位),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09基于python實(shí)現(xiàn)的抓取騰訊視頻所有電影的爬蟲
這篇文章主要介紹了用python實(shí)現(xiàn)的抓取騰訊視頻所有電影的爬蟲,這個(gè)程序使用芒果存, 所以大家需要下載使用mongodb才可以2016-04-04python tkiner實(shí)現(xiàn) 一個(gè)小小的圖片翻頁(yè)功能的示例代碼
這篇文章主要介紹了python tkiner實(shí)現(xiàn) 一個(gè)小小的圖片翻頁(yè)功能,需要的朋友可以參考下2020-06-06Python快速實(shí)現(xiàn)分列轉(zhuǎn)到行的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用Python快速實(shí)現(xiàn)分列轉(zhuǎn)到行的效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)一下2023-03-03twilio python自動(dòng)撥打電話,播放自定義mp3音頻的方法
今天小編就為大家分享一篇twilio python自動(dòng)撥打電話,播放自定義mp3音頻的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08python 定時(shí)器,輪詢定時(shí)器的實(shí)例
今天小編就為大家分享一篇python 定時(shí)器,輪詢定時(shí)器的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02python基于queue和threading實(shí)現(xiàn)多線程下載實(shí)例
這篇文章主要介紹了python基于queue和threading實(shí)現(xiàn)多線程下載實(shí)例,是比較實(shí)用的技巧,需要的朋友可以參考下2014-10-10