在 Ubuntu 24.04 中,系統預設安裝 Python 3.12。為了維護系統穩定,這類較新的 Linux 版本採用了 PEP 668 規範,限制直接使用 pip 將套件安裝到全域環境。如果你直接執行 pip install,通常會看到外部管理環境的錯誤提示。
使用虛擬環境安裝
這是目前最推薦且標準的作法,可以避免不同專案之間的套件衝突。你必須先安裝 venv 工具,然後建立一個獨立的資料夾來存放套件。
sudo apt update
sudo apt install python3-venv
python3 -m venv myenv
source myenv/bin/activate
進入虛擬環境後,終端機提示字元前會出現環境名稱,這時你就可以放心使用 pip install 安裝任何套件,它們會被存放在 myenv 資料夾內。
使用 pipx 安裝工具
如果你想安裝的是像 black、ansible 或 flake8 這種可以在終端機直接執行的工具,而不是要在程式碼裡 import 的函式庫,pipx 是最好的選擇。它會自動幫每個工具建立隔離環境並設定好執行路徑。
sudo apt install pipx
pipx ensurepath
pipx install 套件名稱
使用 APT 系統套件管理
如果你需要的套件非常常見,例如 NumPy 或 Requests,Ubuntu 的官方軟體倉庫通常會有維護好的版本。這些套件會安裝在全域,且由系統統一管理。
sudo apt install python3-numpy
強制全域安裝
雖然非常不建議,但如果你非得在全域環境安裝套件且不在乎系統穩定性,可以使用 break-system-packages 參數來跳過保護機制。請注意這可能會導致 Ubuntu 系統內建的 Python 工具故障。
pip install 套件名稱 --break-system-packages
要退出已經啟動的 Python 虛擬環境,方法非常簡單,只需要在終端機輸入一個指令即可。
使用 deactivate 指令
當你完成工作,想要回到 Ubuntu 系統預設的 Python 環境時,直接輸入:
deactivate
執行後,你會發現終端機提示字元前方的括號環境名稱(例如 (myenv))消失了,這表示你已經成功登出虛擬環境。這個指令不需要加上 sudo,也不需要路徑,因為在你啟動環境時,deactivate 函式就已經被載入到目前的 shell 階段中。
刪除虛擬環境
如果你不再需要這個虛擬環境,想要徹底移除它,做法並非透過 pip 卸載,而是直接刪除該環境所在的資料夾。
rm -rf myenv
這會刪除所有在該環境中安裝的套件與相關設定,且不會影響到系統其他的 Python 設定。
python3 -m pip install pr pip-req.txt
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
If you wish to install a non-Debian packaged Python application,
it may be easiest to use pipx install xyz, which will manage a
virtual environment for you. Make sure you have pipx installed.
See /usr/share/doc/python3.12/README.venv for more information.
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing –break-system-packages.
hint: See PEP 668 for the detailed specification.
python3 -m venv ./venv
The virtual environment was not created successfully because ensurepip is not
available. On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.
apt install python3.12-venv
You may need to use sudo with that command. After installing the python3-venv
package, recreate your virtual environment.
Failing command: /root/venv/bin/python3
➜ ~ apt install python3-venv
在 Ubuntu 24.04 上為 Python 3.12 安裝 MySQL 連接器,最穩定的做法是透過虛擬環境。目前主流有兩種套件選擇:官方的 mysql-connector-python 或社群常用的 mysqlclient。
準備系統依賴項目
在安裝 Python 套件之前,建議先安裝編譯所需的系統開發庫。如果是要安裝 mysqlclient(效能較好),則必須先執行以下指令:
sudo apt update
sudo apt install python3-dev default-libmysqlclient-dev build-essential
在虛擬環境中安裝
首先建立並進入虛擬環境,接著使用 pip 安裝。
python3 -m venv env
source env/bin/activate
如果你想安裝官方提供的連接器:
pip install mysql-connector-python
如果你想安裝效能較佳、符合 Python DB API 規範的套件:
pip install mysqlclient
驗證安裝結果
你可以進入 Python 互動環境測試是否安裝成功:
python
import mysql.connector
print(mysql.connector.version)
或是針對 mysqlclient:
python
import MySQLdb
print(MySQLdb.version)
使用 APT 安裝(全域環境)
如果你不想使用虛擬環境,而是希望整個系統都能使用,可以使用 Ubuntu 官方維護的套件。這會自動處理所有依賴關係,且不會觸發 PEP 668 的外部環境錯誤。
sudo apt install python3-mysql.connector
這種方式安裝的版本通常比較舊,但保證與系統相容。
需要我提供一段連接 MySQL 資料庫並執行查詢的範例程式碼嗎?