

亚马逊 CodeCatalyst 不再向新买家开放。现有客户可以继续正常使用该服务。有关更多信息，请参阅 [如何从中迁移 CodeCatalyst](migration.md)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Python
<a name="packages-python"></a>

这些主题描述了如何使用 `pip` Python 包管理器以及 `twine` Python 包发布实用工具 CodeCatalyst。

**Topics**
+ [配置 pip 并安装 Python 程序包](packages-python-pip.md)
+ [配置 Twine 并发布 Python 程序包](packages-python-twine.md)
+ [Python 程序包名称规范化](python-name-normalization.md)
+ [Python 兼容性](packages-python-compatibility.md)

# 配置 pip 并安装 Python 程序包
<a name="packages-python-pip"></a>

要`pip`与一起使用 CodeCatalyst，您必须`pip`连接到软件包存储库并提供用于身份验证的个人访问令牌。您可以在 CodeCatalyst 控制台中查看有关`pip`连接到软件包存储库的说明。在您进行身份验证并`pip`连接到之后 CodeCatalyst，您可以运行`pip`命令。

**Contents**
+ [CodeCatalyst 使用 pip 从中安装 Python 软件包](#pip-install)
+ [从 PyPI 开始使用 Python 软件包 CodeCatalyst](#pip-install-pypi)
+ [pip 命令支持](#pip-command-support)
  + [与存储库进行交互的受支持命令](#supported-pip-commands-that-interact-with-a-repository)
  + [支持的客户端命令](#supported-pip-client-side-commands)

## CodeCatalyst 使用 pip 从中安装 Python 软件包
<a name="pip-install"></a>

以下说明说明了`pip`如何配置为从您的 CodeCatalyst 包存储库或其上游存储库之一安装 Python 包。

**配置并使用`pip`从软件包存储库安装 Python CodeCatalyst 软件包**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 在项目的概述页面上，选择**程序包**。

1. 从程序包存储库列表中，选择您的程序包存储库。

1. 选择**连接到存储库**。

1. 在**连接到存储库**对话框中，从程序包管理器客户端列表中选择 **pip**。

1. 您需要一个个人访问令牌 (PAT) 来对 pip 进行 CodeCatalyst身份验证。如果您已有一个 PAT，则可以使用它。如果没有 PAT，您可以在此处创建一个。

   1. 选择**创建令牌**。

   1. 选择**复制**以复制您的 PAT。
**警告**  
关闭此对话框后，您将无法再次查看或复制您的 PAT。

1. 使用`pip config`命令设置 CodeCatalyst 注册表 URL 和凭据。替换以下值。
**注意**  
如果通过控制台指令进行复制，则以下值将进行更新且不应更改。
   + *username*用您的 CodeCatalyst 用户名替换。
   + *PAT*用您的 CodeCatalyst PAT 替换。
   + *space\$1name*替换为您的 CodeCatalyst 空间名称。
   + *proj\$1name*用您的 CodeCatalyst 项目名称替换。
   + *repo\$1name*替换为你的 CodeCatalyst 软件包存储库名称。

   ```
   pip config set global.index-url https://username:PAT@https://packages.region.codecatalyst.aws/pypi/space_name/proj_name/repo_name/simple/
   ```

1. 假设您的存储库或其中一个上游存储库中存在程序包，则可以使用 `pip install` 来安装。例如，使用以下命令来安装 `requests` 程序包。

   ```
   pip install requests
   ```

   使用该`-i`选项可暂时恢复为从 [https://pypi.org](https://pypi.org) 安装软件包，而不是从软件包存储库安装 CodeCatalyst 软件包。

   ```
   pip install -i https://pypi.org/simple requests
   ```

## 从 PyPI 开始使用 Python 软件包 CodeCatalyst
<a name="pip-install-pypi"></a>

**通过为仓库配置与 PyPI 的上游连接，你可以通过 CodeCatalyst 存储库使用 [Python 包索引 (PyPI)](https://www.pypi.org/) 中的 Python 包。**从 **PyPI** 消耗的包会被摄取并存储在你的仓库中。 CodeCatalyst 

**使用来自 PyPI 的程序包**

1. 如果您还没有，请按照中的步骤在 CodeCatalyst 软件包存储库中[CodeCatalyst 使用 pip 从中安装 Python 软件包](#pip-install)配置 pip。

1. 确保您的存储库已将 **PyPI** 添加为上游来源。您可以按照[添加上游存储库](packages-upstream-repositories-add.md)中的说明操作并选择 **PyPI 存储**存储库来检查添加了哪些上游来源或将 **PyPI** 添加为上游来源。

有关从上游存储库请求程序包的更多信息，请参阅[请求包含上游存储库的程序包版本](packages-upstream-repositories-request.md)。

## pip 命令支持
<a name="pip-command-support"></a>

以下各节总结了 CodeCatalyst 存储库支持的 pip 命令以及不支持的特定命令。

**Topics**
+ [与存储库进行交互的受支持命令](#supported-pip-commands-that-interact-with-a-repository)
+ [支持的客户端命令](#supported-pip-client-side-commands)

### 与存储库进行交互的受支持命令
<a name="supported-pip-commands-that-interact-with-a-repository"></a>

此部分列出了 `pip` 命令，其中 `pip` 客户端向其配置的注册表发出一个或多个请求。这些命令已经过验证，在针对 CodeCatalyst 软件包存储库调用时可以正常运行。


****  

| 命令 | 说明 | 
| --- | --- | 
|   [install](https://pip.pypa.io/en/stable/reference/pip_install/)   |  安装程序包。  | 
|   [download](https://pip.pypa.io/en/stable/reference/pip_download/)   |  下载程序包。  | 

CodeCatalyst 不实现`pip search`。如果您配置`pip`了 CodeCatalyst 包存储库，则运行`pip search`将搜索并显示来自 [PyP](https://pypi.org/) I 的包。

### 支持的客户端命令
<a name="supported-pip-client-side-commands"></a>

这些命令不需要与存储库进行任何直接交互，因此 CodeCatalyst 无需执行任何操作即可支持它们。


****  

| 命令 | 说明 | 
| --- | --- | 
|   [uninstall](https://pip.pypa.io/en/stable/reference/pip_uninstall/)   |  卸载程序包。  | 
|   [freeze](https://pip.pypa.io/en/stable/reference/pip_freeze/)   |  按要求格式输出已安装的程序包。  | 
|   [list](https://pip.pypa.io/en/stable/reference/pip_list/)   |  列出已安装程序包。  | 
|   [show](https://pip.pypa.io/en/stable/reference/pip_show/)   |  显示有关已安装程序包的信息。  | 
|   [check](https://pip.pypa.io/en/stable/reference/pip_check/)   |  验证已安装的程序包是否具有兼容的依赖项。  | 
|   [config](https://pip.pypa.io/en/stable/reference/pip_config/)   |  管理本地和全局配置。  | 
|   [wheel](https://pip.pypa.io/en/stable/reference/pip_wheel/)   |  根据您的要求构建 wheel。  | 
|   [hash](https://pip.pypa.io/en/stable/reference/pip_hash/)   |  计算程序包存档的哈希值。  | 
|   [completion](https://pip.pypa.io/en/stable/user_guide/#command-completion)   |  协助完成命令。  | 
|   [debug](https://pip.pypa.io/en/stable/reference/pip_debug/)   |  显示对调试有用的信息。  | 
|  help  |  显示命令的帮助。  | 

# 配置 Twine 并发布 Python 程序包
<a name="packages-python-twine"></a>

要`twine`与一起使用 CodeCatalyst，您必须`twine`连接到您的包存储库并提供用于身份验证的个人访问令牌。您可以在 CodeCatalyst 控制台中查看有关`twine`连接到软件包存储库的说明。在您进行身份验证并`twine`连接到之后 CodeCatalyst，您可以运行`twine`命令。

## CodeCatalyst 使用 Twine 将软件包发布到
<a name="packages-twine-publish"></a>

以下说明说明了如何进行身份验证并`twine`连接到您的 CodeCatalyst 软件包存储库。

**配置并使用`twine`将包发布到您的软件 CodeCatalyst 包存储库**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 在项目的概述页面上，选择**程序包**。

1. 从程序包存储库列表中，选择您的程序包存储库。

1. 选择**连接到存储库**。

1. 在**连接到存储库**对话框中，从程序包管理器客户端列表中选择 **Twine**。

1. 您将需要一个个人访问令牌 (PAT) 来对 twine 进行 CodeCatalyst身份验证。如果您已有一个 PAT，则可以使用它。如果没有 PAT，您可以在此处创建一个。

   1. 选择**创建令牌**。

   1. 选择**复制**以复制您的 PAT。
**警告**  
关闭此对话框后，您将无法再次查看或复制您的 PAT。

1. 您可以使用 `.pypirc` 文件或环境变量配置 twine。

   1. **使用 `.pypirc` 文件进行配置。**

      在选定编辑器中打开 `~/.pypirc`。

      为其添加索引服务器 CodeCatalyst，包括您在上一步中创建和复制的存储库、用户名和 PAT。替换以下值。
**注意**  
如果通过控制台指令进行复制，则以下值将进行更新且不应更改。
      + *username*用您的 CodeCatalyst 用户名替换。
      + *PAT*用您的 CodeCatalyst PAT 替换。
      + *space\$1name*替换为您的 CodeCatalyst 空间名称。
      + *proj\$1name*用您的 CodeCatalyst 项目名称替换。
      + *repo\$1name*替换为你的 CodeCatalyst 软件包存储库名称。

      ```
      [distutils]
      index-servers = proj-name/repo-name
      
      [proj-name/repo-name]
      repository = https://packages.region.codecatalyst.aws/pypi/space_name/proj_name/repo_name/
      password = PAT
      username = username
      ```

   1. **使用环境变量进行配置。**

      设置以下环境变量。在`TWINE_REPOSITORY_URL`值中，*repo\$1name*使用您的 CodeCatalyst 空间*space\$1name**proj\$1name*、项目和包存储库名称更新、和。

      ```
      export TWINE_USERNAME=username
      ```

      ```
      export TWINE_PASSWORD=PAT
      ```

      ```
      export TWINE_REPOSITORY_URL="https://packages.region.codecatalyst.aws/pypi/space_name/proj_name/repo_name/"
      ```

1. 使用 `twine upload` 命令发布 Python 发行版。

# Python 程序包名称规范化
<a name="python-name-normalization"></a>

CodeCatalyst 在存储软件包名称之前对其进行标准化，这意味着中的软件包名称 CodeCatalyst 可能与发布软件包时提供的名称不同。

对于 Python 程序包，在执行规范化时，程序包名称转为小写，所有 `.`、`-` 和 `_` 字符都替换为单个 `-` 字符。因此，程序包名称 `pigeon_cli` 和 `pigeon.cli` 会规范化并存储为 `pigeon-cli`。pip 和 twine 可以使用未规范化的名称。有关 Python 程序包名称规范化的更多信息，请参阅 Python 文档中的 [PEP 503](https://www.python.org/dev/peps/pep-0503/#normalized-names)。

# Python 兼容性
<a name="packages-python-compatibility"></a>

 虽然 CodeCatalyst 不支持 `/simple/` API，但它确实支持 `Legacy` API 操作。 CodeCatalyst 不支持 PyPI `XML-RPC` 或 `JSON` API 操作。

有关更多信息，请参阅 Python 打包管理机构 GitHub存储库中的以下内容。
+ [Legacy API](https://warehouse.pypa.io/api-reference/legacy.html)
+ [XML-RPC API](https://github.com/pypi/warehouse/blob/main/docs/dev/api-reference/xml-rpc.rst)
+ [JSON API](https://docs.pypi.org/api/json/)