mint install python3 from source


20200702  

大版本沒區別時,不要自己編譯安裝!

ubuntu20.04 自帶 只有3.8.2 沒有2.7了.  而3.9要10月才出.所以,這時候,就別自己編譯python3.8.3 了. 一不留神,就各種問題,比如文件管理器打不開...只能重裝

 

基於Ubuntu 18.04  自帶了3.6,可惜 3.7秒出. 后面還有3.8

一個原則是: 

自帶的3.6不要動

防止用apt install python3-XXX時版本不對. 

理由: 自帶的2.7和3.6都是讓操作系統自己用的;

python是linux系發行版的一部分, 在linux發行版中的地位不低於windows里Windows/文件夾下的系統工具.正因為這樣,才不要隨便折騰每個發行版自帶的py版本.

相反,python不是windows的一部分,正因為不是,所以在windows下才可以隨便安裝卸載升級py都沒問題.

而自己跑程序用的最新版python解釋器,是為了:

用pipenv建立簡單運行環境,結合sublime text3 ctrl+B 運行簡單程序.

這樣,簡單的小程序就不需要用docker python鏡像+pycharm這么重型的工具了.

3.6歸操作系統, 3.8+為我自用

重在隔離.

 

1 安裝准備

編譯python源碼時,可能會報錯, 

ModuleNotFoundError: No module named '_ctypes'

參考https://blog.csdn.net/sinat_36184075/article/details/80155392

1.1 安裝

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install -y build-essential python-dev python-setuptools python-pip python-smbus
sudo apt-get install -y build-essential libncursesw5-dev libgdbm-dev libc6-dev
sudo apt-get install -y zlib1g-dev libsqlite3-dev tk-dev
sudo apt-get install -y libssl-dev openssl
sudo apt-get install -y libffi-dev liblzma-dev

參考https://tecadmin.net/install-python-3-7-on-ubuntu-linuxmint/

sudo apt-get install -y build-essential checkinstall
sudo apt-get install -y libreadline-gplv2-dev libncursesw5-dev libssl-dev \
    libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

1.2 編譯openssl

因為之前編譯python3.8之后遇到了 import ssl 報錯  或者使用pika的時候

ModuleNotFoundError: No module named '_ssl'

說明編譯python時,  openssl 沒有配置對

為了保險,還是建議自己先編譯一下openssl

https://www.cnblogs.com/xuanmanstein/p/11547505.html

 

2下載編譯安裝

2.1下載

注意小版本號可能升級(注意瀏覽py官網新版本源碼發布地址:https://www.python.org/downloads/source/

cd /usr/src
sudo wget https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tgz --no-check-certificate
sudo tar xzf Python-3.8.3.tgz

2.2 編譯/安裝 

刪除 pip  virtualenvs 緩存

rm -rf ~/.cache/pip
rm -rf ~/.local/share/virtualenvs

編譯安裝

cd /usr/src/Python-3.8.3
sudo ./configure --enable-shared --enable-optimizations --with-openssl=/usr/src/openssl-1.1.1d
sudo make
sudo make altinstall
sudo ldconfig /usr/local/lib

注意帶上 --enable-shared, 因為編譯geos等庫時可能需要, ubuntu自帶的3.6也是帶的

 

altinstall 保證沒有替換系統自帶的python3版本

必須有 ldconfig 這句,不然啟動時會報錯

python3.8: error while loading shared libraries: libpython3.8.so.1.0: cannot open shared object file: No such file or directory

 

python3.8

可以啟動. 表示編譯成功


再檢查一下pip3.8是不是正確,防止指向系統自帶的3.6

 

更新一下pip

 sudo pip3.8 install --upgrade pip

  

pip3 可能不再指向3.6了

 

如果不對,就修正一下

https://www.cnblogs.com/xuanmanstein/p/11505668.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM