Ubuntu 20.04 設(shè)置 Python 項(xiàng)目環(huán)境的正確姿勢(shì)
今天,我們將學(xué)習(xí)在 Ubuntu 20.04 下為你的 Python 項(xiàng)目設(shè)置環(huán)境的眾多方法之一。
原因
我最近參與了一項(xiàng)技術(shù)測(cè)試,該測(cè)試是 Python Jr 開發(fā)工作選擇過程的一部分。測(cè)試附帶問題描述、預(yù)期解決方案、部署指南和初始框架。在那個(gè)框架中出現(xiàn)了一個(gè)Pipfile安裝了一些庫(kù)并定義了 Python 版本的框架。這就是問題所在:Ubuntu 20.04 中的 Python 版本是3.8,項(xiàng)目要求使用3.9版本 ,然后我想:好吧,那就讓我們安裝 Python 3.9!但事情沒那么簡(jiǎn)單……
我遇到了以下問題:
- 安裝新版本不會(huì)使其成為系統(tǒng)默認(rèn)值
- 此后,pip, pipenv沒有按照我想要的Python版本進(jìn)行適當(dāng)?shù)呐渲谩?/li>
現(xiàn)在,我將向您展示我的詳細(xì)分步解決方案。
安裝新的 Python 版本
為了安裝 Python 3.9 版,我最終使用了存儲(chǔ)庫(kù),而不是通過編譯源代碼來進(jìn)行安裝。
添加存儲(chǔ)庫(kù):
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo add-apt-repository ppa:deadsnakes/ppa
更新軟件包列表:
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt update
安裝軟件包:
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt install python3.9
可選(實(shí)際上,我建議您這樣做),你可以將 Python 3.9 添加到系統(tǒng) PATH:
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo nano /etc/profile.d/python.sh
并添加:
PATH=/opt/python/3.9/bin/:$PATH
這將允許用戶在終端中運(yùn)行 pip 命令以在主目錄中安裝軟件包。
將新版本設(shè)置為默認(rèn)版本
檢查是否有不同版本的Python的替代方案:
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo update-alternatives --list python
如果它不存在,則會(huì)出現(xiàn)以下消息:
update-alternatives: 錯(cuò)誤: 無 python 的候選項(xiàng)
然后執(zhí)行:
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
輸出:
- update-alternatives: 使用 /usr/bin/python3.8 來在自動(dòng)模式中提供 /usr/bin/python (python)
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.9 2
輸出:
- update-alternatives: 使用 /usr/bin/python3.9 來在自動(dòng)模式中提供 /usr/bin/python (python)
之后,你運(yùn)行以下命令:
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo update-alternatives --config python
然后你會(huì)看到如下輸出:
- 有 2 個(gè)候選項(xiàng)可用于替換 python (提供 /usr/bin/python)。
- 選擇 路徑 優(yōu)先級(jí) 狀態(tài)
- ------------------------------------------------------------
- * 0 /usr/bin/python3.9 2 自動(dòng)模式
- 1 /usr/bin/python3.8 1 手動(dòng)模式
- 2 /usr/bin/python3.9 2 手動(dòng)模式
要維持當(dāng)前值[*]請(qǐng)按<回車鍵>,或者鍵入選擇的編號(hào):
在上面的示例中,我最終選擇了數(shù)字 2,因?yàn)樗俏蚁M麖默F(xiàn)在開始成為默認(rèn)版本的 Python 版本。
完成后,檢查下 Python 版本
- linuxmi@linuxmi:~/www.linuxmi.com$ python --version
輸出:
Python 3.9.7
此時(shí),我們已經(jīng)正確安裝了所需的 Python 版本,并且是系統(tǒng)的默認(rèn)版本。
pip 和 pipenv 的問題
即使您將另一個(gè)版本的 Python 設(shè)置為默認(rèn)值,安裝 pip 和 pipenv 最終也會(huì)轉(zhuǎn)到 Python 3.8 PATH。因此,為了安裝指向 Python 3.9 的 pip,我最終正常安裝了 pip,然后按如下方式更新了 pip:
- linuxmi@linuxmi:~/www.linuxmi.com$ curl https://bootstrap.pypa.io/get-pip.py -o get-piy.py
進(jìn)而運(yùn)行:
- linuxmi@linuxmi:~/www.linuxmi.com$ python3.9 get-pip.py
輸出如下:
- Defaulting to user installation because normal site-packages is not writeable
- Collecting pip
- Downloading pip-21.2.4-py3-none-any.whl (1.6 MB)
- |████████████████████████████████| 1.6 MB 5.0 kB/s
- Installing collected packages: pip
- Successfully installed pip-21.2.4
如果有權(quán)限問題,可以使用 sudo 或使用 --user 標(biāo)志運(yùn)行命令:
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo python3.9 get-pip.py
- linuxmi@linuxmi:~/www.linuxmi.com$ python3.9 get-pip.py --user
之后,確保 pip 綁定到 Python 3.9 版:
- linuxmi@linuxmi:~/www.linuxmi.com$ pip --version
預(yù)期的輸出應(yīng)該是這樣的:
- pip 21.2.4 from /home/linuxmi/.local/lib/python3.9/site-packages/pip (python 3.9)
正如我之前提到的,我需要安裝 Pipfile 依賴項(xiàng),所以我需要 pipenv。我這里是運(yùn)行 pip install pipenv,pipenv 還沒有鏈接到舊版本。如果發(fā)生這種情況,請(qǐng)運(yùn)行:
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo pip install pipenv
并且該軟件包將安裝在 3.9 版本中。
總結(jié)
如果你到此為止并解決了問題,那么恭喜!功勞不屬于我而歸于你尋求解決方案!如果沒有,請(qǐng)告訴我們問題是什么,以便我們可以幫助你。感謝閱讀,更多資訊及教程請(qǐng)關(guān)注Linux迷(www.linuxmi.com)。