Ubuntu中安裝指定Python版本方法詳解(理論上各版本通用)
前言
此方法理論上講適用于所有Ubuntu版本(可能太老的不行)本文章中寫的是18.04的,之前我在16.04,20.04上均安裝成功
我們首先查看一下當(dāng)前系統(tǒng)自帶的Python版本及指向:
ls -l /usr/bin | grep python
從上圖可以看出是我們輸入python3指向的是Python3.6的版本
我們?cè)佥斎霔l命令:python3
試試:
就進(jìn)入了Python命令行運(yùn)行方式,可以看到我們的Python具體版本為3.6.9的,然后我們輸入:exit();
然后回車就退出了命令行運(yùn)行方式
下載Python
下載鏈接:https://www.python.org/ftp/python/
自己找到需要的版本(我這里以安裝3.8.5版本為例子)
往里面翻找到這個(gè)就好了哈
在Ubuntu里我們需要下載安裝Python到自己指定的路徑(我這里直接在當(dāng)前用戶目錄下了:cd ~
)
然后我們復(fù)制剛剛自己需要的版本的下載鏈接,在Ubuntu里輸入命令:
sudo wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz
安裝Python(方法一:默認(rèn)安裝路徑)
解壓安裝包到當(dāng)前目錄下并且進(jìn)入:
sudo tar -zxvf Python-3.8.5.tgz -C ~ cd Python-3.8.5
然后我們進(jìn)行初始化:
sudo ./configure
注意!
如果你輸入這條命令后出現(xiàn)下圖錯(cuò)誤的:
輸入以下命令安裝一下編譯環(huán)境:
sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev liblzma-dev libffi-dev libc6-dev如果這里沒報(bào)錯(cuò),而是后面make編譯的時(shí)候報(bào)錯(cuò)的話,也一樣輸入這條命令即可解決
完成后再編譯測(cè)試安裝:(其實(shí)sudo make test
這條不輸入也沒事,只是測(cè)試一下,而且這條時(shí)間比較久,可能要用5-20分鐘,后面安裝不成功的時(shí)候再輸入查看問題也行)
sudo make sudo make test sudo make install
好了,安裝完了
小提示:這時(shí)候Python已經(jīng)安裝完成,可執(zhí)行文件在/usr/local/bin下,庫(kù)文件在/usr/local/lib下,配置文件在/usr/local/include下,其他資源文件在/usr/local/share下,大家用Pycharm等編輯器使用Python時(shí)就用這些路徑
此時(shí)你會(huì)發(fā)現(xiàn),我們輸入命令:python3
還是出現(xiàn)的python3.6.9,但是你試著嘗試輸入:python3.8
出現(xiàn)的就是我們剛剛安裝的python3.8.5版本
(欲知后事如何,請(qǐng)翻到本文最后,現(xiàn)在講第二種安裝方法)
安裝Python(方法二:自定義安裝路徑)
這里按同樣,解壓安裝包到當(dāng)前目錄下并且進(jìn)入:
sudo tar -zxvf Python-3.8.5.tgz -C ~ cd Python-3.8.5
然后我們進(jìn)行和方法一不一樣的初始化:
./configure --prefix=/usr/local/python3.8.5
解釋:
--prefix
后面的參數(shù)為指定安裝路徑注意:如果這里初始化有問題則與方法一的解決方式一樣
后面和上面方法一安裝過(guò)程一樣,完成后再編譯測(cè)試安裝:
sudo make sudo make test sudo make install
然后我們需要添加一下環(huán)境變量:
PATH=$PATH:$HOME/bin:/usr/local/python3.8.5/bin
好了,安裝完了(大家可以輸入:echo $PATH
查看一下環(huán)境變量有沒有添加進(jìn)去)
小提示:這時(shí)候Python已經(jīng)安裝完成,可執(zhí)行文件在/usr/local/python3.8.5/bin下,庫(kù)文件在/usr/local/python3.8.5/lib下,配置文件在/usr/local/python3.8.5/include下,其他資源文件在/usr/local/python3.8.5/share下,大家用Pycharm等編輯器使用Python時(shí)就用這些路徑
然后就和方法一的問題一樣,我們輸入命令:python3
還是出現(xiàn)的python3.6.9,但是你試著嘗試輸入:python3.8
出現(xiàn)的就是我們剛剛安裝的python3.8.5版本,接下來(lái)講更新Python默認(rèn)指向
更新命令‘python’默認(rèn)指向?yàn)槲覀兯惭b的版本
我們回到本文最開頭的查看Python指向命令:
ls -l /usr/bin | grep python
因?yàn)槲覀儸F(xiàn)在啥也沒設(shè)置,所以輸入了還是和上面顯示的一樣,然后我們現(xiàn)在有兩種情況:
你安裝的是對(duì)應(yīng)你這個(gè)系統(tǒng)的Python當(dāng)前版本號(hào)你安裝的是其他Python版本號(hào)
什么是Python當(dāng)前版本號(hào),什么是其他版本號(hào)?
現(xiàn)在以我這里為例,我們從下圖可得:
我們輸入命令:
python3
對(duì)應(yīng)的版本為python3.6.9,那么,我們安裝的版本如果是python3.6.11,或者是python3.6.5啥的,只要是在這個(gè)3.6的版本內(nèi)就是當(dāng)前版本號(hào),本文安裝的版本號(hào)為3.8,所以安裝的是其他版本號(hào)
兩種情況有不同的更新指向方式:
方式一:當(dāng)前版本號(hào)直接將指向鏈接更新
刪除原有鏈接:
sudo rm /usr/bin/python
建立新鏈接:
sudo ln -s /usr/bin/python3.8 /usr/bin/python3 sudo ln -s /usr/bin/python3.8 /usr/bin/python
解釋:當(dāng)中的python3.8就是我們上面在輸入python3.8的時(shí)候就出現(xiàn)我們安裝的python3.8.5的版本嘛,然后這里改為輸入python3和python都指向我們的python3.8.5
然后輸入python3
或者python
就會(huì)發(fā)現(xiàn)已經(jīng)好了,方式二就不用再進(jìn)行了
方式二:指向其他版本號(hào)
因?yàn)槲覀儼惭b的Python3.8是不同于系統(tǒng)自帶python的版本號(hào),不在/usr/bin下而在/usr/local/bin或者/usr/local/python3.8.5/bin下(取決于前面執(zhí)行的是./configure
還是./configure --prefix=/usr/local/python3.8.5
,因此需要先加一條軟鏈接并且把之前的python命令改為python.bak,同時(shí)pip也需要更改
若Python3.8安裝時(shí),執(zhí)行的是./configure
,則依次輸入:
# 將原python與python3命令改為python.bak與python.bak sudo mv /usr/bin/python /usr/bin/python.bak sudo mv /usr/bin/python3 /usr/bin/python3.bak # 將我們剛裝的python3.8.5指定運(yùn)行命令為python與python3 sudo ln -s /usr/local/bin/python3 /usr/bin/python sudo ln -s /usr/local/bin/python3 /usr/bin/python3 # 將原pip和pip3命令改為pip.bak與pip3.bak sudo mv /usr/bin/pip /usr/bin/pip.bak sudo mv /usr/bin/pip3 /usr/bin/pip3.bak # 將我們剛裝的python3.8.5的pip指定運(yùn)行命令為pip與pip3 sudo ln -s /usr/local/bin/pip3 /usr/bin/pip sudo ln -s /usr/local/bin/pip3 /usr/bin/pip3
注意:如果你的系統(tǒng)不自帶Python2,則第一句與第五句命令會(huì)報(bào)錯(cuò),或者你的系統(tǒng)不自帶Python3,則第二句與第六句命令會(huì)報(bào)錯(cuò),pip也一樣,這是正常的,不用理會(huì),報(bào)錯(cuò)內(nèi)容如下(報(bào)錯(cuò)意思其實(shí)就是你沒有這個(gè)):
上面的思路梳理一下:
更改完成之后,現(xiàn)在輸入
python
或者是python3
將會(huì)指向python3.8.5輸入
python.bak
或者是python3.bak
將會(huì)分別指向系統(tǒng)自帶的python2與python3輸入
pip
或者是pip3
將會(huì)指向python3.8.5的將會(huì)指向pip輸入
pip.bak
或者是pip3.bak
將會(huì)分別指向系統(tǒng)自帶的python2與python3的pip
若Python3.8安裝時(shí),執(zhí)行的是./configure --prefix=/usr/local/python3.8.5
,則依次輸入:
# 將原python與python3命令改為python.bak與python.bak sudo mv /usr/bin/python /usr/bin/python.bak sudo mv /usr/bin/python3 /usr/bin/python3.bak # 將我們剛裝的python3.8.5指定運(yùn)行命令為python與python3 sudo ln -s /usr/local/python3.8.5/bin/python3.8 /usr/bin/python sudo ln -s /usr/local/python3.8.5/bin/python3.8 /usr/bin/python3 # 將原pip和pip3命令改為pip.bak與pip3.bak sudo mv /usr/bin/pip /usr/bin/pip.bak sudo mv /usr/bin/pip3 /usr/bin/pip3.bak # 將我們剛裝的python3.8.5的pip指定運(yùn)行命令為pip與pip3 sudo ln -s /usr/local/python3.8.5/bin/pip3 /usr/bin/pip sudo ln -s /usr/local/python3.8.5/bin/pip3 /usr/bin/pip3
這里的話呢,上面已經(jīng)解釋過(guò)了
總結(jié)
到此這篇關(guān)于Ubuntu中安裝指定Python版本(理論上各版本通用)的文章就介紹到這了,更多相關(guān)Ubuntu安裝指定Python版本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Python中生成隨機(jī)數(shù)據(jù)的示例詳解
在日常工作編程中存在著各種隨機(jī)事件,同樣在編程中生成隨機(jī)數(shù)字的時(shí)候也是一樣。每當(dāng)在?Python?中生成隨機(jī)數(shù)據(jù)、字符串或數(shù)字時(shí),最好至少大致了解這些數(shù)據(jù)是如何生成的。所以本文將詳細(xì)為大家講解一下Python是如何生成隨機(jī)數(shù)據(jù),需要的可以參考一下2022-04-04tensorflow實(shí)現(xiàn)殘差網(wǎng)絡(luò)方式(mnist數(shù)據(jù)集)
這篇文章主要介紹了tensorflow實(shí)現(xiàn)殘差網(wǎng)絡(luò)方式(mnist數(shù)據(jù)集),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05Python機(jī)器學(xué)習(xí)應(yīng)用之基于天氣數(shù)據(jù)集的XGBoost分類篇解讀
XGBoost是一個(gè)優(yōu)化的分布式梯度增強(qiáng)庫(kù),旨在實(shí)現(xiàn)高效,靈活和便攜。它在?Gradient?Boosting?框架下實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法。XGBoost提供并行樹提升(也稱為GBDT,GBM),可以快速準(zhǔn)確地解決許多數(shù)據(jù)科學(xué)問題2022-01-01Tensorflow2.10實(shí)現(xiàn)圖像分割任務(wù)示例詳解
這篇文章主要為大家介紹了Tensorflow2.10實(shí)現(xiàn)圖像分割任務(wù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01python smtplib模塊自動(dòng)收發(fā)郵件功能(一)
這篇文章主要為大家詳細(xì)介紹了python smtplib模塊自動(dòng)收發(fā)郵件功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Python制作數(shù)據(jù)預(yù)測(cè)集成工具(值得收藏)
這篇文章主要介紹了Python如何制作數(shù)據(jù)預(yù)測(cè)集成工具,幫助大家進(jìn)行大數(shù)據(jù)預(yù)測(cè),感興趣的朋友可以了解下2020-08-08Scrapy-redis爬蟲分布式爬取的分析和實(shí)現(xiàn)
所謂的scrapy-Redis實(shí)際上就是scrapy+redis,其中對(duì)redis的操作采用redis-py客戶端。下面這篇文章詳細(xì)介紹了Scrapy-redis爬蟲分布式爬取的分析和實(shí)現(xiàn),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-02-02