使用命令列發佈及取用 Python 套件 (CLI)
Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019
Azure Artifacts 可讓您建立、裝載及共用 Python 套件與您的小組或組織。 您可以從本機開發環境中的命令行使用 Azure Artifacts 摘要來發佈及取用 Python 套件。
在本文中,您將了解如何:
- 建立 Azure Artifacts 摘要。
- 使用 Python artifacts-keyring 套件或個人存取令牌 (PAT) 設定驗證。
- 將 Python 套件發佈至您的摘要。
- 從您的摘要取用 Python 套件。
若要在 Azure Pipelines 中發佈及取用套件,請參閱 使用 Azure Pipelines 發佈 Python 套件。
必要條件
若要執行下列步驟,您必須具備:
建立 Azure Artifacts 摘要
如果您沒有摘要,請使用下列步驟來建立一個摘要。
登入您的 Azure DevOps 組織,然後移至您的專案。
選取 [ 成品],然後選取 [ 建立摘要]。
為您的摘要輸入下列資訊:
- 輸入摘要的描述性 名稱 。
- 定義其 可見度 (指出誰可以在摘要內檢視套件)。
- 選取是否要使用公用來源的套件,例如 pypi.org。
- 指定摘要的範圍。
選取 建立。
移至您的 Azure DevOps 集合,選取您的專案。
選取 [ 成品],然後選取 [ 建立摘要]。
為您的摘要輸入下列資訊:
- 輸入摘要的描述性 名稱 。
- 定義其 可見度 (指出誰可以在摘要內檢視套件)。
- 選取是否要使用公用來源的套件,例如 pypi.org。
- 指定摘要的範圍。
選取 建立。
移至您的 Azure DevOps 集合,選取您的專案。
選取 [ 成品],然後選取 [ 建立摘要 ] 以建立新的摘要。
為您的摘要輸入下列資訊:
- 輸入摘要的描述性 名稱 。
- 定義其 可見度 (指出誰可以在摘要內檢視套件)。
- 選取是否要使用公用來源的套件,例如 pypi.org。
- 指定摘要的範圍。
選取 建立。
移至您的 Azure DevOps 集合,選取您的專案。
選取 [ 成品],然後選取 [ 建立摘要 ] 以建立新的摘要。
為您的摘要輸入下列資訊:
- 輸入摘要的描述性 名稱 。
- 定義其 可見度 (指出誰可以在摘要內檢視套件)。
- 選擇是否要使用來自公用來源的套件,例如 pypi.org。
選取 建立。
建立本機 Python 套件
您需要 Python 套件才能發佈至您的摘要。 如果您沒有要發佈的套件,您可以從 GitHub 複製範例 Python 套件。
複製範例 Python 套件
使用下列步驟,從 GitHub 使用範例 Python 套件。
移至下列 GitHub 存放庫:
https://github.com/microsoft/python-package-template
將存放庫分支至您的 GitHub 帳戶。
移至分支存放庫,然後選取 [ 程序代碼]。
複製分支存放庫的URL。
從本機電腦上的 CLI,使用您從分支存放庫複製的 URL,將存放庫複製到本機電腦。
git clone <REPOSITORY_URL>
將目錄變更為複製的存放庫。
cd python-package-template
建置您的套件
若要建置轉輪和來源散發,請在專案目錄中執行下列命令:
pip install --upgrade build
python -m build
如果您的 Python 專案有 setup.py
檔案,您可以使用下列命令來建置套件:
python setup.py sdist bdist_wheel
要摘要的 連線
線上至摘要以發佈或取用 Python 套件的主要方式有兩種:
- 使用 artifacts-keyring 套件,其會自動為您設定驗證。
- 使用 PAT 手動設定認證。
注意
較新版本的 Ubuntu 不支援 artifacts-keyring 。
注意
如果您的組織使用防火牆或 Proxy 伺服器,請確定您允許 Azure Artifacts 網域 URL 和 IP 位址。
設定 artifacts-keyring 以進行驗證
artifacts-keyring 套件可與 Python Keyring 套件搭配運作,可讓您設定驗證來發佈和取用您的摘要中的 Python 套件。 pip 和 twine 都會使用 Python Keyring 套件來尋找認證。
重要
您必須有 pip 19.2 和 twine 1.13.0 或更高版本,才能使用 artifacts-keyring。 如需詳細資訊,請參閱 使用需求。
如果您選擇使用 artifacts-keyring,您必須先安裝套件,才能使用它。
在提升許可權的命令提示字元視窗中,執行下列命令以安裝 artifacts-keyring 套件:
pip install artifacts-keyring
發佈 Python 套件
您可以使用 artifacts-keyring 套件或 PAT 驗證,將 Python 套件發佈至您的摘要。
使用 artifacts-keyring 發佈套件
選取 [連線 以從您的摘要摘要。
選取 [對應項 ],然後從 [項目設定 ] 區段複製存放庫 URL。
若要將套件發佈至摘要,請執行下列命令,將 <FEED_URL 取代為您從 連線> 複製到摘要對話框的存放庫 URL:
twine upload --repository-url <FEED_URL> dist/*
使用 PAT 驗證發佈套件
使用對應項將您的套件上傳至 Azure Artifacts 摘要。
移至您的 Azure DevOps 專案,然後選取 [ 成品]。
選取您的摘要,然後選取要摘要 連線。
選取 [Python] 區段底下的對應項。
在您的開發電腦上,確定已安裝對應項。
pip install --upgrade twine
請遵循 [項目設定] 區段中的指示來設定您的
.pypirc
檔案。若要避免在每次發佈套件時輸入您的個人存取令牌,您可以將認證新增至
.pypirc
檔案。 請確定您不會將個人存取令牌簽入公用存放庫。.pypirc
具有認證的檔案範例:[distutils] Index-servers = <FEED_NAME> [<FEED_NAME>] Repository = <FEED_URL> username = <FEED_NAME> password = <YOUR_PERSONAL_ACCESS_TOKEN>
若要上傳套件,請在專案目錄中執行下列命令,以 <您的摘要名稱取代FEED_NAME> 。 在 Windows 上,您可能需要使用
--config-file
選項來指定pypirc
檔案位置。twine upload --repository <FEED_NAME> dist/*
取用 Python 套件
您可以使用 artifacts-keyring 套件或 PAT 驗證,從摘要取用 Python 套件。
使用 artifacts-keyring 取用套件
在您的專案中,選取 [成品] ,然後選取您的摘要。
選取 [連線到摘要]。
選取 [Python] 區段底下的 pip。
準備您的本機 Python 環境。
確定 pip 已安裝且最新:
python -m pip install --upgrade pip
若要建立並啟用 Python 虛擬環境:
python -m venv myenv myenv/Scripts/activate
index-url
從 連線 的 [項目設定] 區段複製 來摘要對話方塊。若要從摘要安裝套件,請執行下列命令,將 PACKAGE_NAME 取代<為摘要中的套件名稱,並以<您從 連線 複製到摘要對話框的索引 URL INDEX_URL>:>
pip install <PACKAGE_NAME> --index-url <INDEX_URL>
當您第一次連線到 Azure DevOps 時,系統會提示您輸入認證。 在適當的欄位中輸入您的使用者名稱(任何字串)和個人存取令牌。 認證會在本機快取,並用來在下一次使用服務時自動登入您。
使用 PAT 驗證取用套件
移至您的 Azure DevOps 專案,然後選取 [ 成品]。
選取您的摘要,然後選取要摘要 連線。
選取 [Python] 區段底下的 pip。
準備您的本機 Python 環境。
確定 pip 已安裝且最新:
python -m pip install --upgrade pip
建立並啟動 Python 虛擬環境:
python -m venv myenv myenv/Scripts/activate
將pip.ini (Windows) 或 pip.conf (Mac/Linux) 檔案新增至虛擬環境的根目錄。 從 連線 的 [項目設定] 區段複製內容以摘要對話框,並將其新增至您的 pip.ini 或 pip.conf 檔案。
若要避免每次從摘要安裝套件時輸入個人存取令牌,您可以將認證新增至 pip.ini 或 pip.conf 檔案。 請確定您不會將個人存取令牌簽入公用存放庫。
具有認證的pip.ini或 pip.conf 檔案範例:
[global] index-url=https://<FEED_NAME>:<YOUR_PERSONAL_ACCESS_TOKEN>@<FEED_URL>
若要安裝套件,請執行下列命令,以 <摘要中的套件名稱取代 PACKAGE_NAME> 。
pip install <PACKAGE_NAME>