Ubuntu 20.04 設置 Python 項目環境的正確姿勢
今天,我們將學習在 Ubuntu 20.04 下為你的 Python 項目設置環境的眾多方法之一。
原因
我最近參與了一項技術測試,該測試是 Python Jr 開發工作選擇過程的一部分。測試附帶問題描述、預期解決方案、部署指南和初始框架。在那個框架中出現了一個Pipfile安裝了一些庫并定義了 Python 版本的框架。這就是問題所在:Ubuntu 20.04 中的 Python 版本是3.8,項目要求使用3.9版本 ,然后我想:好吧,那就讓我們安裝 Python 3.9!但事情沒那么簡單……
我遇到了以下問題:
- 安裝新版本不會使其成為系統默認值
- 此后,pip, pipenv沒有按照我想要的Python版本進行適當的配置。
現在,我將向您展示我的詳細分步解決方案。
安裝新的 Python 版本
為了安裝 Python 3.9 版,我最終使用了存儲庫,而不是通過編譯源代碼來進行安裝。
添加存儲庫:
- 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
可選(實際上,我建議您這樣做),你可以將 Python 3.9 添加到系統 PATH:
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo nano /etc/profile.d/python.sh
并添加:
PATH=/opt/python/3.9/bin/:$PATH
這將允許用戶在終端中運行 pip 命令以在主目錄中安裝軟件包。
將新版本設置為默認版本
檢查是否有不同版本的Python的替代方案:
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo update-alternatives --list python
如果它不存在,則會出現以下消息:
update-alternatives: 錯誤: 無 python 的候選項
然后執行:
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
輸出:
- update-alternatives: 使用 /usr/bin/python3.8 來在自動模式中提供 /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 來在自動模式中提供 /usr/bin/python (python)
之后,你運行以下命令:
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo update-alternatives --config python
然后你會看到如下輸出:
- 有 2 個候選項可用于替換 python (提供 /usr/bin/python)。
- 選擇 路徑 優先級 狀態
- ------------------------------------------------------------
- * 0 /usr/bin/python3.9 2 自動模式
- 1 /usr/bin/python3.8 1 手動模式
- 2 /usr/bin/python3.9 2 手動模式
要維持當前值[*]請按<回車鍵>,或者鍵入選擇的編號:
在上面的示例中,我最終選擇了數字 2,因為它是我希望從現在開始成為默認版本的 Python 版本。
完成后,檢查下 Python 版本
- linuxmi@linuxmi:~/www.linuxmi.com$ python --version
輸出:
Python 3.9.7
此時,我們已經正確安裝了所需的 Python 版本,并且是系統的默認版本。
pip 和 pipenv 的問題
即使您將另一個版本的 Python 設置為默認值,安裝 pip 和 pipenv 最終也會轉到 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
進而運行:
- 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
如果有權限問題,可以使用 sudo 或使用 --user 標志運行命令:
- 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
預期的輸出應該是這樣的:
- pip 21.2.4 from /home/linuxmi/.local/lib/python3.9/site-packages/pip (python 3.9)
正如我之前提到的,我需要安裝 Pipfile 依賴項,所以我需要 pipenv。我這里是運行 pip install pipenv,pipenv 還沒有鏈接到舊版本。如果發生這種情況,請運行:
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo pip install pipenv
并且該軟件包將安裝在 3.9 版本中。
總結
如果你到此為止并解決了問題,那么恭喜!功勞不屬于我而歸于你尋求解決方案!如果沒有,請告訴我們問題是什么,以便我們可以幫助你。感謝閱讀,更多資訊及教程請關注Linux迷(www.linuxmi.com)。