使用pipenv後,如何在pycharm中新增直譯器

一路向北321發表於2024-04-22
問題:
我用pyenv安裝的python3.10,執行pyenv which python3.10顯示:/Users/hxjs/.pyenv/versions/3.10.0/bin/python3.10
那系統級別的python直譯器路徑就是:/Users/hxjs/.pyenv/versions/3.10.0/bin/python3.10

我在專案下,使用pipenv --python 3.10給專案安裝了python 3.10,並使用pipenv install給專案安裝了依賴包,執行pipenv --venv顯示:/Users/hxjs/.local/share/virtualenvs/ad_building-lpQIA7wN
那專案的虛擬環境路徑就是:/Users/hxjs/.local/share/virtualenvs/ad_building-lpQIA7wN 此時我在pycharm中給專案新增直譯器,base interpreter 是選擇系統級別的python直譯器路徑還是應該選擇專案的虛擬環境路徑嗎?為什麼?

解答:

為什麼選擇 pyenv 安裝的 Python 作為 base interpreter

當你在 PyCharm 中設定 Pipenv Environment 時,選擇 pyenv 安裝的 Python 作為 base interpreter 實際上是告訴 PyCharm 你想基於哪個 Python 版本來建立和管理你的 pipenv 虛擬環境。這裡的關鍵點是:

  • base interpreter 是用來建立虛擬環境的基礎 Python 版本。 當你在 PyCharm 中建立一個新的 Pipenv Environment 時,PyCharm 會使用這個 base interpreter 來初始化 pipenv 虛擬環境。這意味著虛擬環境將繼承這個 base interpreter 的 Python 版本。

  • pipenv 建立的虛擬環境路徑是虛擬環境的位置,而不是用來建立它的直譯器的路徑。 當你執行 pipenv --python 3.10 時,pipenv 會基於指定的 Python 版本(在這個案例中是透過 pyenv 管理的 3.10 版本)建立一個新的虛擬環境。這個虛擬環境位於 /Users/hxjs/.local/share/virtualenvs/ad_building-lpQIA7wN,但它是基於 /Users/hxjs/.pyenv/versions/3.10.0/bin/python3.10 建立的。

為什麼不直接選擇虛擬環境的路徑作為 base interpreter

當你在 PyCharm 中配置專案直譯器時,你實際上是在告訴 PyCharm 你的專案應該使用哪個 Python 直譯器來執行程式碼。如果你直接使用虛擬環境路徑作為專案直譯器,這在技術上是可行的,因為虛擬環境本質上就是一個 Python 直譯器的副本(加上一組特定的包)。但在使用 pipenv 的情況下,PyCharm 提供了一個更高階的整合方式,即透過識別 PipfilePipfile.lock 來自動管理虛擬環境,而不是手動指定虛擬環境的路徑。

結論

  • 在 PyCharm 中配置 Pipenv Environment 時,選擇 pyenv 安裝的 Python 直譯器作為 base interpreter 是正確的做法。這告訴 PyCharm 你想基於哪個 Python 版本建立你的 pipenv 虛擬環境。

  • 一旦虛擬環境被 pipenv 建立,PyCharm 會自動使用這個環境(而不是你手動選擇虛擬環境的路徑)。這樣,你就可以利用 pipenv 管理的所有便利,包括自動依賴管理和環境隔離。

相關文章