2025年12月10日 星期三

python3 new 使用虛擬環境 (Virtual Environment)

 您好!您遇到的這個錯誤訊息 error: externally-managed-environment 是因為 Raspberry Pi OS (基於 Debian) 為了保護系統預裝的 Python 環境所做的變更。

問題的核心: 系統預設不允許您使用 sudo pip3 install 直接將套件安裝到全域(System-wide)Python 環境中。這是為了防止第三方套件破壞或干擾系統依賴的 Python 組件。

以下是針對這個問題的三種解決方案,以及最推薦的做法:


💡 解決方案一:使用虛擬環境 (Virtual Environment) (推薦)

這是最標準、最安全,且最推薦的 Python 專案管理方式。虛擬環境能將您的專案所需套件與系統隔離,避免衝突。

步驟 1: 安裝虛擬環境工具 (如果尚未安裝)

Bash
sudo apt update
sudo apt install python3-venv

步驟 2: 建立虛擬環境

在您要放置專案的資料夾內,建立一個名為 venv 的虛擬環境(名稱可自訂):

Bash
# 假設您在 /home/pi/my_project 資料夾中
cd /home/pi/my_project

# 建立虛擬環境
python3 -m venv venv

步驟 3: 啟用虛擬環境

每次開始工作時,都需要執行這個指令來啟用環境:

Bash
source venv/bin/activate

啟用後,您的終端機提示符號前會顯示 (venv),表示您已進入隔離的環境。

步驟 4: 在虛擬環境中安裝套件

現在您可以在這個環境中安全地使用 pip install (注意:不再需要 sudo):

Bash
pip install redis RPi.GPIO

解決方案二:使用 --break-system-packages 選項 (不推薦,但快速)

雖然系統警告您這樣做可能會有風險,但在 Pi3 這種開發環境,如果您的目標是單純快速測試,可以使用這個選項強制安裝。

Bash
pip3 install redis RPi.GPIO --break-system-packages

⚠️ 警告: 這樣做可能會導致未來系統更新或其它依賴於系統 Python 環境的應用程式出錯。請謹慎使用。


解決方案三:使用 APT 安裝 (僅限於官方套件)

如果套件在 Raspberry Pi OS 的官方儲存庫中有提供,您可以使用 apt install 來安裝。這通常適用於較為穩定和常見的套件。

對於 redisRPi.GPIO

  • Redis 的 Python 客戶端 (redis-py):

    Bash
    # 注意套件名稱可能與 pip 不同,通常會加上 python3-
    sudo apt install python3-redis -y
    
  • RPi.GPIO 庫:

    Bash
    sudo apt install python3-rpi.gpio -y
    

優點: 這是最安全的系統級安裝方式,且會與系統保持同步更新。 缺點: APT 儲存庫中的套件版本可能不是最新的。

總結: 對於您要進行的 GPIO + Redis 專案,強烈建議採用「解決方案一:使用虛擬環境」,這能確保您的環境穩定且便於未來管理。

沒有留言:

張貼留言