How to solve `externally-managed-environment` error for pip install
date
Jul 8, 2024
slug
python-externally-managed-environment-error
status
Published
tags
Programming
summary
如何解決 pip install 發生的 externally-managed-environment 問題。
type
Post
Introduction
由於我一直以來都不是 Python 的重度使用者,因此 Python 對我來說就是個解決問題的小工具,平常要裝什麼套件都是直接
pip install
下去。直到我有一天發現執行了
pip install
之後…我本來一直不太想解決,每次都在後面加上
--break-system-packages
。然而進入了新的實習後,覺得這樣下去不是解決辦法,於是花了點時間理解一下 Python 到底在幹嘛,順便寫這篇做個筆記。Python Virtual Environment
上面的錯誤訊息中,從這段中我看到了關鍵字 Virtual Environment。
至於為什麼需要 Python 的虛擬環境呢?
根據我的理解,是因為在你有很多 Python 專案的情況下,不同的 Python 專案可能會使用到同一個 pip 套件,然而有機會這兩個專案是用到不同版本的。如果把這個套件安裝在電腦的 Global 環境,但兩個不同的專案使用這個套件需要不同的版本,可能就會有衝突或沒辦法執行的狀況。(若有任何錯誤歡迎指正)
開始下面的說明之前,當然需要安裝先安裝 Python。沒有安裝的話,那就去安裝啊(x
Windows 可以到 Python 官網下載,macOS 和 Linux 則可以開始 Terminal 執行:
建立 Python 虛擬環境
首先需要先進入到自己的 project 資料夾,先使用
pwd
確認自己是不是在正確的路徑下:接下來在資料夾內建立 venv,最後面的
env
是虛擬環境的名稱,project 資料夾下會建立一個 env
資料夾,也可以改成自己想要的名稱。啟用 Python 虛擬環境
在你環境的有一個 activate 的檔案,source 之後你的 Terminal 就會使用這個 Python 虛擬環境。
可以 Install 了!
這時候你執行
pip install
後都能正常使用了,你的套件就會被安裝在你的 env 資料夾內。更快的 pip
?
在寫這份的時候想到一個用 Rust 寫的 Python 套件管理工具
uv
,執行速度比 pip
快了不少。安裝的步驟可以參考他的 Github。
使用
uv
建立 Python 虛擬環境的步驟跟上面差不多,一開始也是先建立虛擬環境,不過這次 uv
就會自己幫你取資料夾名稱了。然後跟上面一樣啟用這個環境就可以了。
uv pip install
安裝的指令也很直覺,在
pip install
前面加一個 uv
,剩下就跟 pip install
一樣了。你甚至可以在你的
~/.zshrc
或是其他的 Shell 設定檔裡面,把 uv pip
替換成 pip
,這樣之後你只要打 pip install
就好XD