使用命令行发布和使用 Python 包 (CLI)

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Azure Artifacts 允许你与团队或组织创建、托管和共享 Python 包。 可以从本地开发环境中的命令行使用 Azure Artifacts 源发布和使用 Python 包。

本文介绍如何执行以下操作:

  • 创建 Azure Artifacts 源。
  • 使用 Python 项目密钥包或个人访问令牌(PAT)设置身份验证。
  • 将 Python 包发布到源。
  • 使用源中的 Python 包。

若要在 Azure Pipelines 中发布和使用包,请参阅 使用 Azure Pipelines 发布 Python 包。

先决条件

若要运行以下步骤,必须具备:

  • Azure DevOps 组织。 免费创建一个
  • 具有打包>读取范围的个人访问令牌(PAT)。 若要创建一个,请参阅 “创建 PAT”。
  • 一个 Azure DevOps 项目。 如果没有项目, 请创建一个项目。
  • 在本地计算机上安装了 Python 3.9 或更高版本。 在此处下载 Python。
  • pip 24.0 和 twine 5.0.0 或更高版本。
  • 要从本地计算机发布到源的 Python 包。
  • 如果使用示例 Python 包:
    • 一个 GitHub 帐户。 创建一个免费的 GitHub 帐户(如果没有)。
    • 在本地计算机上安装的 git。
  • 一个 GitHub 帐户。 创建一个免费的 GitHub 帐户(如果没有)。
  • 访问 Azure DevOps Server 集合。
  • 具有打包>读取范围的个人访问令牌(PAT)。 若要创建一个,请参阅 “创建 PAT”。
  • 一个 Azure DevOps 项目。 如果没有项目, 请创建一个项目。
  • 在本地开发环境中安装 Python 3.9 或更高版本。
  • pip 24.0 和 twine 5.0.0 或更高版本。
  • 如果使用示例 Python 包:
    • 一个 GitHub 帐户。 创建一个免费的 GitHub 帐户(如果没有)。
    • 在本地计算机上安装的 git。

创建 Azure Artifacts 源

如果没有源,请使用以下步骤创建一个源。

  1. 登录到 Azure DevOps 组织,然后转到项目。

  2. 选择“项目”,然后选择“创建源”

    A screenshot showing how to create a feed.

  3. 输入源的以下信息:

    1. 输入源的描述性 名称
    2. 定义其 可见性 (指示谁可以查看源中的包)。
    3. 选择是否使用来自公共源的包,例如 pypi.org。
    4. 指定源的范围。
  4. 选择创建

  1. 转到 Azure DevOps 集合,选择项目。

  2. 选择“项目”,然后选择“创建源”

    A screenshot showing how to create a feed in DevOps Server.

  3. 输入源的以下信息:

    1. 输入源的描述性 名称
    2. 定义其 可见性 (指示谁可以查看源中的包)。
    3. 选择是否使用来自公共源的包,例如 pypi.org。
    4. 指定源的范围。
  4. 选择创建

  1. 转到 Azure DevOps 集合,选择项目。

  2. 选择 “项目”,然后选择“创建源” 以创建新源

  3. 输入源的以下信息:

    1. 输入源的描述性 名称
    2. 定义其 可见性 (指示谁可以查看源中的包)。
    3. 选择是否使用来自公共源的包,例如 pypi.org。
    4. 指定源的范围。
  4. 选择创建

  1. 转到 Azure DevOps 集合,选择项目。

  2. 选择 “项目”,然后选择“创建源” 以创建新源

  3. 输入源的以下信息:

    1. 输入源的描述性 名称
    2. 定义其 可见性 (指示谁可以查看源中的包)。
    3. 选择是否使用来自公共源的包,例如 pypi.org。
  4. 选择创建

创建本地 Python 包

需要一个 Python 包才能发布到源。 如果没有要发布的包,可以从 GitHub 克隆示例 Python 包。

克隆示例 Python 包

使用以下步骤从 GitHub 使用示例 Python 包。

  1. 转到以下 GitHub 存储库:

    https://github.com/microsoft/python-package-template
    
  2. 在 GitHub 帐户中创建存储库分支。

  3. 转到分支存储库,然后选择“ 代码”。

  4. 复制分叉存储库的 URL。

  5. 从本地计算机上的 CLI,使用从分支存储库复制的 URL 将存储库克隆到本地计算机。

    git clone <REPOSIORY_URL>
    
  6. 将目录更改为克隆的存储库。

    cd python-package-template
    

生成包

若要生成 wheel 和源分发,请在项目目录中运行以下命令:

pip install --upgrade build
python -m build

如果 Python 项目有文件 setup.py ,可以使用以下命令生成包:

python setup.py sdist bdist_wheel

连接到源

可通过两种主要方法连接到源以发布或使用 Python 包:

  1. 使用 artifacts-keyring 包,该包会自动为你设置身份验证。
  2. 使用 PAT 手动设置凭据。

注意

Ubuntu 的较新版本不支持 artifacts-keyring

注意

如果你的组织使用防火墙或代理服务器,请确保允许 Azure Artifacts 域 URL 和 IP 地址

设置用于身份验证的项目密钥环

Artifacts-keyring 包与 Python 密钥传送包配合使用,使你可以设置身份验证,以便发布和使用源中的 Python 包。 pip 和 twine 都使用 Python 密钥环包来查找凭据。

重要

必须具有 pip 19.2 和 twine 1.13.0 或更高版本才能使用 artifacts-keyring。 有关详细信息,请参阅 使用情况要求

如果选择使用 artifacts-keyring,则必须先安装包,然后才能使用它。

在提升的命令提示符窗口中,运行以下命令以安装 artifacts-keyring 包:

pip install artifacts-keyring

发布 Python 包

可以使用项目密钥包或 PAT 身份验证将 Python 包发布到源。

使用 artifacts-keyring 发布包

  1. 从源中选择连接源。

    A screenshot highlighting the connect to feed.

  2. 选择 孪生, 然后从 “项目设置 ”部分复制存储库 URL。

    A screenshot of instructions to connect to feed with twine.

  3. 若要将包发布到源,请运行以下命令,将 F企业版D_URL> 替换为<从连接复制到源对话框的存储库 URL:

    twine upload --repository-url <FEED_URL> dist/*
    

使用 PAT 身份验证发布包

使用孪生将包上传到 Azure Artifacts 源。

  1. 转到 Azure DevOps 项目并选择“ 项目”。

  2. 选择源并选择连接源

    A screenshot highlighting the connect to feed.

  3. 选择 Python 部分下的孪生体

    A screenshot highlighting the twine package type.

  4. 在开发计算机上,确保已安装孪生体。

    pip install --upgrade twine
    
  5. 按照“项目设置”部分中的说明设置.pypirc文件。

    A screenshot highlighting the `.pyirc` file content.

  6. 为了避免每次发布包时都需要输入个人访问令牌,可以将凭据添加到 .pypirc 文件中。 确保不会将个人访问令牌检查到公共存储库中。

    .pypirc包含凭据的文件示例:

    [distutils]
    Index-servers =
        <FEED_NAME>
    
    [<FEED_NAME>]
    Repository = <FEED_URL>
    username = <FEED_NAME>
    password = <YOUR_PERSONAL_ACCESS_TOKEN>
    
  7. 若要上传包,请在项目目录中运行以下命令,将 <F企业版D_NAME>替换为源名称。 在 Windows 上,可能需要使用--config-file选项指定pypirc文件位置。

    twine upload --repository <FEED_NAME> dist/*
    

使用 Python 包

可以使用 artifacts-keyring 包或 PAT 身份验证从源使用 Python 包。

将包与 artifacts-keyring 配合使用

  1. 在项目中,选择“项目,然后选择源。

  2. 选择“Connect to feed”。

    A screenshot highlighting the connect to feed button.

  3. 选择 Python 部分下的 pip

    A screenshot of pip selection in Connect to feed.

  4. 准备本地 Python 环境。

    1. 确保 pip 已安装并更新:

      python -m pip install --upgrade pip
      
    2. 若要创建和激活 Python 虚拟环境,请执行以下操作:

      python -m venv myenv
      myenv/Scripts/activate
      
  5. index-url复制连接的项目设置”部分以馈送对话框。

    A screenshot of the index-url in the Connect to feed dialog.

  6. 若要从源安装包,请运行以下命令,将PACKAGE_NAME替换为<源<中的包名称,并使用从连接复制到源对话框的索引 URL INDEX_URL>:>

    pip install <PACKAGE_NAME> --index-url <INDEX_URL>
    

首次连接到 Azure DevOps 时,系统会提示输入凭据。 在相应的字段中输入用户名(任何字符串)和个人访问令牌。 凭据将在本地缓存,用于下次使用服务时自动登录。

通过 PAT 身份验证使用包

  1. 转到 Azure DevOps 项目并选择“ 项目”。

  2. 选择源并选择连接源

    A screenshot highlighting the connect to feed button.

  3. 选择 Python 部分下的 pip

    A screenshot highlighting the pip package type.

  4. 准备本地 Python 环境。

    1. 确保 pip 已安装并更新:

      python -m pip install --upgrade pip
      
    2. 创建和激活 Python 虚拟环境:

      python -m venv myenv
      myenv/Scripts/activate
      
  5. pip.ini (Windows)或 pip.conf (Mac/Linux)文件添加到虚拟环境的根目录。 从连接的“项目设置”部分复制内容以馈送对话框,并将其添加到pip.inipip.conf 文件。

    A screenshot highlighting the pip.ini file content.

  6. 若要避免每次从源安装包时输入个人访问令牌,可以将凭据添加到 pip.inipip.conf 文件。 请确保不要将个人访问令牌检查到公共存储库。

    包含凭据的 pip.ini 或 pip.conf 文件的示例:

    [global]
    index-url=https://<FEED_NAME>:<YOUR_PERSONAL_ACCESS_TOKEN>@<FEED_URL>
    
  7. 若要安装包,请运行以下命令,将PACKAGE_NAME>替换为<源中的包名称。

    pip install <PACKAGE_NAME>