開始使用

歡迎您加入 pip 團隊。

本文件旨在協助您設定 pip 的工作環境,並作為開發設定的指南和參考。如果您在此過程中遇到任何問題,請於 問題追蹤器 回報問題。

取得原始碼

要在 pip 上工作,您需要先取得 pip 原始碼。 GitHub 上取得原始碼。

$ git clone https://github.com/pypa/pip
$ cd pip

開發環境

pip 是以 Python 編寫的命令列應用程式。為了開發 pip,您應該在您的電腦上 安裝 Python

為了開發 pip,您需要安裝 nox。完整的開發設定如下:

python -m venv .venv
source .venv/bin/activate
python -m pip install nox
py -m venv .venv
.venv\Scripts\activate
py -m pip install nox

從原始碼樹執行 pip

要在開發時從原始碼樹執行 pip 可執行檔,可以使用可編輯式安裝在本地安裝 pip(在虛擬環境中)。然後,您可以正常呼叫您的本機源碼樹 pip(確認已啟用虛擬環境)。

python -m pip install -e .
python -m pip --version
py -m pip install -e .
py -m pip --version

執行測試

pip 的測試使用 pytest 測試架構和 unittest.mocknox 用來自動化 pip 測試的設定與執行。

建議在開發時平行執行測試,以獲得更好的體驗,因為循序執行這些測試時,可能會花費很長的時間才能完成。

執行測試

$ nox -s test-3.10 -- -n auto

要執行沒有並行的測試,請執行

$ nox -s test-3.10

以上的範例針對 Python 3.10 執行測試。您也可以使用其他版本,例如 3.9pypy3

nox 已設定為將傳遞的任何其他引數轉發給 pytest。這樣就能使用 pytest 的 豐富 CLI。舉例來說,您可以使用 pytest 提供的各種方式來選擇測試

$ # Using file name
$ nox -s test-3.10 -- tests/functional/test_install.py
$ # Using markers
$ nox -s test-3.10 -- -m unit
$ # Using keywords
$ nox -s test-3.10 -- -k "install and not wheel"

使用作業系統發行版 Python 版本執行 pip 測試時,請注意,由於發行版可能會引入修補程式,某些功能測試可能會失敗。為了讓所有測試順利通過,請考慮

  • python.org 安裝 Python 或是從原始碼編譯

  • 或者使用 pyenv 來協助執行來源編譯

執行 pip 的所有測試套件,需要安裝支援的版本控制工具(subversion、bazaar、git 和 mercurial)。如果您缺少任何一個這些 VCS,系統會自動跳過這些測試。您也可以明確告訴 pytest 跳過這些測試

$ nox -s test-3.10 -- -k "not svn"
$ nox -s test-3.10 -- -k "not (svn or git)"

執行檢查器

pip 使用 pre-commit 來管理程式碼庫的檢查。 pre-commit會執行 pip 所有檔案的各種檢查,並使用工具協助在程式碼庫中遵循一致的程式碼格式。

如要使用本地的檢查器,請執行

$ nox -s lint

避免使用 # noqa 註解來抑制檢查器警告 - 若有可能,應該修正警告,而非抑制。 # noqa 註解保留給少見的情況使用,例如建議的格式會導致嚴重的可讀性問題時。

在偵錯器下執行 pip

如要偵錯 pip 的行為,您可以像這樣在偵錯器下執行它

$ python -m pdb -m pip --debug ...

使用您要執行 pip 的引數取代 ...。將 c(「繼續」)指令提供給 PDB,然後才能執行程序。

--debug 旗標會停用 pip 的例外處理常式,此常式通常會擷取所有未處理的例外。如果使用了此旗標,pip 將讓這些例外傳播到它的主次常式以外,讓偵錯器擷取這些例外。這樣您就能透過 PDB 死後偵錯例外。

建立文件

pip 文件使用 Sphinx 建立。文件以 reStructuredText 編寫。

如要在本機建立文件,請執行

$ nox -s docs

已建立的文件可見於 docs/build 資料夾。

對於每次拉取請求,文件會遵循此連結進行配置

https://pip--<PR-NUMBER>.org.readthedocs.build/en/<PR-NUMBER>

接下來是什麼?

以下網頁可能對新的貢獻者在開始貢獻之前,於何處繼續尋找有所幫助。