在 Artifact Registry 中存储 Python 软件包

本快速入门介绍了如何设置私有 Artifact Registry Python 代码库、上传软件包,然后安装该软件包。

准备工作

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Artifact Registry API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Artifact Registry API.

    Enable the API

启动 Cloud Shell

在本快速入门中,您将使用 Cloud Shell,这是一个用于管理 Google Cloud 上托管资源的 Shell 环境。

Cloud Shell 预装了 Google Cloud CLI 和 Python。gcloud CLI 提供 Google Cloud 界面

启动 Cloud Shell:

  1. 转到 Google Cloud 控制台。

    Google Cloud 控制台

  2. 在 Google Cloud 控制台工具栏中,点击激活 Cloud Shell

控制台下方的框架内会打开一个 Cloud Shell 会话。您可以使用此 shell 运行 gcloud 命令。

安装必需的软件包

Twine 是用于发布 Python 软件包的工具。您将使用 Twine 将软件包上传到 Artifact Registry。

在本快速入门中,您将使用 Cloud Shell。此默认安装包括 Artifact Registry 密钥环后端: 使用 Artifact Registry 来处理身份验证如果您创建了 虚拟环境或 Cloud Shell,您必须安装密钥环后端以进行身份验证。 如需了解详情,请参阅使用密钥串进行身份验证

如需安装 Twine,请运行以下命令:

pip install twine

您现在可以设置 Artifact Registry 了。

创建代码库

为软件包创建代码库。

  1. 运行以下命令,在位置 us-central1 中名为 quickstart-python-repo 的当前项目中创建一个新的 Python 软件包代码库。

    gcloud artifacts repositories create quickstart-python-repo \
        --repository-format=python \
        --location=us-central1 \
        --description="Python package repository"
    
  2. 运行以下命令确认已创建代码库:

    gcloud artifacts repositories list
    
  3. 为了简化 gcloud 命令,请将默认代码库设置为 quickstart-python-repo,并将默认位置设置为 us-central1。设置以上值之后,您无需在需要代码库或位置的 gcloud 命令中指定这些值。

    如需设置代码库,请运行以下命令:

    gcloud config set artifacts/repository quickstart-python-repo
    

    如需设置位置,请运行以下命令:

    gcloud config set artifacts/location us-central1
    

    如需详细了解这些命令,请参阅 gcloud config set 文档。

配置身份验证

Artifact Registry 密钥库后端使用应用默认凭据 (ADC) 策略查找您的凭据,该策略会在您的环境中查找凭据。

在本快速入门中,您将执行以下操作:

  • 为 ADC 生成用户凭据。生产中 您应使用服务账号并提供 GOOGLE_APPLICATION_CREDENTIALS 环境变量。
  • piptwine 命令中添加 Artifact Registry 代码库网址 这样您就无需使用代码库配置 pip 和 Twine 网址。

如需为 ADC 生成凭据,请运行以下命令:

gcloud auth application-default login

如需详细了解身份验证方法以及如何向 pip 添加代码库,以及 Twine 配置,请参阅 设置对 Python 软件包代码库的身份验证

获取示例软件包

构建 Python 项目时,分发文件会保存在 dist 子目录中。为简化本快速入门,您需要 下载预构建的软件包文件。

  1. 创建一个名为 python-quickstart 的 Python 项目文件夹。

    mkdir python-quickstart
    
  2. 创建一个名为 dist 的子目录,然后切换到该目录。

    mkdir python-quickstart/dist
    cd python-quickstart/dist
    
  3. 下载 Python 打包用户指南教程 打包 Python 项目中使用的 Python 示例软件包。

    pip download sampleproject
    

    该命令会下载 sampleproject 软件包及其依赖项。 peppercorn

将软件包上传到代码库

使用 Twine 将软件包上传到您的代码库。

  1. dist 目录切换到父级 python-quickstart 目录。

    cd ..
    
  2. 将软件包从 dist 目录上传到代码库。

    python3 -m twine upload --repository-url https://us-central1-python.pkg.dev/PROJECT_ID/quickstart-python-repo/ dist/*
    

    当您使用 python3 -m 运行该命令时,Python 会找到 运行该命令。如果 twine 命令位于您的系统路径中,您无需 python3 -m 即可运行该命令。

Twine 会将 sampleprojectpeppercorn 上传到您的代码库。

查看代码库中的软件包

如需验证您的软件包是否已添加,请在 quickstart-python-repo 代码库。

运行以下命令:

gcloud artifacts packages list --repository=quickstart-python-repo

如需查看软件包的版本,请运行以下命令:

gcloud artifacts versions list --package=PACKAGE

其中,PACKAGE 是软件包 ID。

安装软件包

运行以下命令安装此软件包:

pip install --index-url https://us-central1-python.pkg.dev/PROJECT_ID/quickstart-python-repo/simple/ sampleproject

问题排查

默认情况下,pip 和 Twine 等工具不会返回详细的错误消息。如果您遇到错误,请使用 --verbose 标志重新运行该命令,以获取更详细的输出。如需了解详情,请参阅Python 软件包问题排查

清理

为避免因本页中使用的资源导致您的 Google Cloud 账号产生费用,请按照以下步骤操作。

在移除代码库之前,请确保已在其他位置保存了您要保留的任何软件包。

如需删除代码库,请执行以下操作:

  1. 如需删除 quickstart-python-repo 代码库,请运行以下命令:

    gcloud artifacts repositories delete quickstart-python-repo
    
  2. 如果要移除您为活跃 gcloud 配置配置的默认代码库和位置设置,请运行以下命令:

    gcloud config unset artifacts/repository
    gcloud config unset artifacts/location
    

后续步骤