Contents

如何修復 Linux 上的 pip「外部管理環境」錯誤

如果您經常使用 Python 並且最近轉向 Ubuntu 23.04 或 Fedora 版本 38,那麼您在使用 Python 套件管理器 pip 安裝套件時很可能會遇到「外部管理環境」錯誤。

遇到以前版本的作業系統(例如 Ubuntu 和 Fedora)中沒有出現的問題可能會讓人感到沮喪。了解這個問題的根本原因並找到快速解決方案將是有效解決問題的關鍵。

為什麼會出現「外部管理環境」錯誤

/bc/images/pip-externally-managed-error.jpeg

每個 Linux 發行版的最新版本都採用了 PEP 中概述的規範,這導致 pip 套件的安裝行為發生變化,預設情況下它們不再安裝在全域範圍內。

這樣做是為了避免發行版的套件管理器和 Python 套件管理工具之間發生衝突。您可以在官方 PEP-668 文件 中了解詳細資訊。如果您希望恢復或覆蓋此機制,可以採取三種方法。

刪除「外部管理」文件

/bc/images/deleting-externally-managed-file.jpeg

要解決 Pip 庫中外部管理套件的問題,可以按照簡單的過程導航到位於「/usr/lib/python3.xx」的目錄並刪除該目錄中的「EXTERNALY-MANAGED」檔案。完成此任務的具體步驟包括執行以下命令:

 cd /usr/lib/python3.11
sudo rm EXTERNALLY-MANAGED 

若要解決該問題並重新建立缺少的功能,請執行以下步驟:1.使用“touch”命令重新產生必要的設定檔。這可以透過在終端機中輸入“touch/etc/systemd/system/multi-user.target.wants/sleep.override”來完成。2。使用「ls-l/etc/systemd/system/multi-user.target.wants/」指令檢查檔案是否存在,驗證檔案是否已成功建立。該文件現在應顯示為常規文件,具有所有者和群組的讀取權限。

 sudo touch EXTERNALLY-MANAGED 

現在,在使用 pip 或 pip3 時,您應該會體驗到順利的安裝過程。

使用虛擬環境安裝 pip 套件

另一種策略是利用虛擬環境作為將特定程式依賴與底層作業系統分離的有效手段,同時促進專案的有序組織。

為了建立虛擬環境並使用 pip 安裝軟體包,請按照以下步驟操作:

⭐ 首先,使用下列指令建立虛擬環境:

 python3 -m venv venv 

⭐ 使用 source 指令取得 bin 目錄中的啟動檔:

 source venv/bin/activate 

使用虛擬環境名稱更新 shell 提示字元可讓您安裝大量適合您需求的 Python 包,從而增強您的開發體驗。

/bc/images/using-venv-solves-the-externally-managed-error.jpeg

初次嘗試,OpenAI Python套件的安裝遇到了困難;然而,在創建和啟動虛擬環境後,安裝過程無縫執行,沒有任何問題。

使用 pipx 安裝 Python 套件

/bc/images/installing-packages-with-pix.jpeg

PipX 是一種高效的工具,用於在虛擬化或隔離設置中部署Python 庫,簡化流程,例如創建針對各個包定制的虛擬環境以及在這些包與其位於用戶.local/中的相應二進製文件之間建立符號連接bin 目錄。這使用戶能夠隨時直接從命令列介面存取和使用透過 PipX 安裝的任何軟體包。

使用 pipx 進行軟體包安裝可以透過在虛擬環境中安裝軟體包來解決「外部管理環境」錯誤的問題。要使用 pipx,請先透過作業系統的預設套件管理器安裝它。

在 Ubuntu/Debian 衍生產品上:

 sudo apt-get install pipx 

在基於 Arch 的系統上:

 sudo pacman -S pipx 

在 Fedora/CentOS/RHEL 上:

 sudo dnf install pipx 

安裝 pipX 後,可以以類似於使用 pip 進行軟體包安裝的方式使用它。例如,考慮以下說明性命令:

 pipx install openai 

有關 pipx 的更多信息,強烈建議使用“man”命令查閱其手冊頁。

現在您知道如何修復「外部管理」錯誤

在成功解決與外部管理環境相關的問題後,人們可以繼續其專案工作或參與更廣泛的練習課程,涉及使用 Python 作為主要程式語言。對於那些擁有包括個人發展和享受在內的更廣泛目標的人來說,可能值得探索透過遊戲化方法來熟練Python 或其他語言的替代方法,這種方法透過將遊戲設計元素融入學習過程來提供身臨其境和令人滿意的體驗。