安裝當地專案

在電腦的資料夾/目錄中取得一個專案十分常見 [1],你希望安裝它。

根據你的使用情況,你可以使用 pip 的兩種方式來執行此操作

  • 一般安裝

  • 可編輯安裝

一般安裝

你可以指定 pip 的專案路徑來安裝當地專案

$ python -m pip install path/to/SomeProject
$ python -m pip install path/to/SomeProject
C:> py -m pip install path/to/SomeProject

這將會以類似於實際安裝的方式,將專案安裝到與 pip 關聯的 Python 中。

這是應該用在持續整合系統和部署中,因為它最接近於如果你建置一個發行版並從中安裝,一個套件將如何被安裝(因為這就是它確切執行的動作)。

可編輯安裝

你可以在「可編輯」模式下安裝當地專案

$ python -m pip install -e path/to/SomeProject
$ python -m pip install -e path/to/SomeProject
C:> py -m pip install -e path/to/SomeProject

可編輯安裝讓你可以在不複製任何檔案的情況下安裝你的專案。反而地,開發目錄中的檔案會被新增到 Python 的匯入路徑中。這種方法非常適合開發,也被稱為「開發安裝」。

使用可編輯安裝,你只需要在你變更專案的元資料(例如:版本、需要產生哪些指令碼等)時,執行重新安裝。當你需要執行專案中非 Python 程式碼的編譯(例如:C 擴充功能)時,你仍然需要執行建置指令碼。

注意

在一般安裝與可編輯安裝之間可以看見行為差異。這些差異取決於建置後端,你應該查看建置後端的說明文件以取得詳細資料。如果你將專案分佈為「發行套件」,使用者會看到一般安裝的行為 -- 因此,確保一般安裝正常運作非常重要。

註解

這在功能上與 setuptools 的開發模式相同,那正是基於 setuptools 的專案使用的機制。

直接使用 setup.py develop 有兩個優點

  • 它也可以與非 setuptools 建置後端搭配使用。

  • 使用 pip 時,「.egg-info」目錄會相對於專案路徑建立。這通常比 setuptools 更佳,因為 setuptools 會將其傾倒在目前的執行目錄中。

建置 artefact

於 21.3 版本中變更: 預設情況下,已不再在呼叫建置系統前將要安裝的專案複製至暫時目錄。提供一個 --use-deprecated=out-of-tree-build 選項,作為一個暫時的後備方案,以輔助使用者移轉。

於 22.1 版本中變更: 已移除 --use-deprecated=out-of-tree-build 選項。

當提供在本地目錄中的專案時,pip 將「就地」呼叫建置系統。這種行為會產生幾個後果

  • 現在,對於某些類型專案以及在 I/O 速度較慢的系統(例如:透過網路掛載儲存裝置或過於積極的防毒軟體)上,本地專案建置速度會顯著加快。

  • 某些建置後端(例如: setuptools)會將次要建置目標(例如: .egg-info 目錄)散佈到專案目錄中。

  • 某些建置後端(例如: setuptools)可能無法再執行平行建置,因為它們先前依賴 pip 為每個建置在一個獨立目錄中呼叫它們這項事實。