[linux]ubuntu16.04 安裝python3.8過程記錄


之前早就買了個阿里雲服務器(低配版),但是一直沒怎么鼓搗,最近開始搭建自己的一個博客(小站是www.vanjoe.top,正在完善),此篇隨筆記錄搭建過程中關於Python3.8的安裝過程。
系統是Ubuntu16.04,自帶python2.7和python3.5,查了下,Python3.8可以共存。
1.下載安裝
源碼安裝包 官網https://www.python.org/downloads/,我這里下載了3.8版本
直接在系統內下載 wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz

2.解壓釋放 tar -zxvf Python-3.8.0.tgz

3.配置安裝路徑
先進入安裝包文件 執行 cd Python-3.8.0/
然后配置安裝路徑,將相關配置都存放於同一個文件夾目錄下,便於管理
./configure prefix=/usr/local/python38

4.編譯和安裝
make && make instal

5.建立軟鏈接
由於我之前有過python3版本,所以我用python38指向python3.8解釋器,建立軟鏈接。
ln -s /usr/local/python38/bin/python3.8 /usr/local/bin/python38

踩過的坑****
安裝完了出現下面的問題:
ModuleNotFoundError: No module named '_ctypes' ERROR:Command errored out with exit status 1: python
一查發現是由於安裝之前相關依賴包沒有安裝所導致的

解決辦法:下載安裝下面這些庫,然后重新編譯python源文件(make altinstall)
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install libmysqlclient-dev
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
成功,最后python指向python2.7解釋器,python3指向python3.5解釋器,python38指向python3.8解釋器。

總結:編譯安裝python源文件之前必須配置依賴環境,不然安裝完后安裝庫的時候會出錯,命令如下:
配置依賴環境:sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev


相關知識點補充:=====
a、 ./configure –prefix 命令用法
源碼的安裝一般由有這三個步驟:配置(configure)、編譯(make)、安裝(make install)。
Configure是一個可執行腳本,它有很多選項,在待安裝的源碼路徑下使用命令./configure –help輸出詳細的選項列表。
其中–prefix選項就是配置安裝的路徑。
如果不配置該選項,安裝后可執行文件默認放在/usr /local/bin,庫文件默認放在/usr/local/lib,配置文件默認放在/usr/local/etc,其它的資源文件放在/usr /local/share,比較分散。為了便於集中管理某個軟件的各種文件,可以配置–prefix,如:
./configure –prefix=/usr/local
可以把所有資源文件放在/usr/local的路徑中,就不會分散了。
用了—prefix選項的另一個好處是卸載軟件或移植軟件。當某個安裝的軟件不再需要時,只須簡單地刪除該安裝目錄,就可以把軟件卸載得干干凈凈;移植軟件只需拷貝整個目錄到另外一個機器即可(相同的操作系統)。
當然要卸載程序,也可以在原來的make目錄下用一次make uninstall,但前提是make文件指定過uninstall。
【版權聲明:此段文字為CSDN博主「痴迷樂極」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。原文鏈接:https://blog.csdn.net/qq_27984355/java/article/details/81603315】

b、 ln -s命令用法:
ln -s 它的功能是為某一個文件或目錄在另外一個位置建立一個同步的鏈接,類似Windows下的超級鏈接。
這個命令最常用的參數是-s,具體用法是:sudo ln -s 源文件 目標文件 鏈接有兩種,一種被稱為硬鏈接(Hard Link),另一種被稱為符號鏈接(Symbolic Link)。建立硬鏈接時,鏈接文件和被鏈接文件必須位於同一個文件系統中,並且不能建立指向目錄的硬鏈接。而對符號鏈接,則不存在這個問題。默認情況下,ln產生硬鏈接。
  在硬鏈接的情況下,參數中的“目標”被鏈接至[鏈接名]。如果[鏈接名]是一個目錄名,系統將在該目錄之下建立一個或多個與“目標”同名的鏈接文件,鏈接文件和被鏈接文件的內容完全相同。如果[鏈接名]為一個文件,用戶將被告知該文件已存在且不進行鏈接。如果指定了多個“目標”參數,那么最后一個參數必須為目錄。
  如果給ln命令加上- s選項,則建立符號鏈接。如果[鏈接名]已經存在但不是目錄,將不做鏈接。[鏈接名]可以是任何一個文件名(可包含路徑),也可以是一個目錄,並且允許它與“目標”不在同一個文件系統中。如果[鏈接名]是一個已經存在的目錄,系統將在該目錄下建立一個或多個與“目標”同名的文件,此新建的文件實際上是指向原“目標”的符號鏈接文件。

統一聲明:關於原創博客內容,可能會有部分內容參考自互聯網,如有原創鏈接會聲明引用;如找不到原創鏈接,在此聲明如有侵權請聯系刪除哈。關於轉載博客,如有原創鏈接會聲明;如找不到原創鏈接,如果有哪些問題、有哪些不妥或者侵犯到您的權益的地方,可以聯系我,我馬上修改。


免責聲明!

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



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