ubuntu 24 無法直接安裝 python package

在 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 資料庫並執行查詢的範例程式碼嗎?

About the author

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *