.pypirc 文件

The .pypirc file

.pypirc 文件允许你为 package indexes (在此称为“仓库”)定义配置,这样你就不必在每次使用 twineflit 上传包时输入 URL、用户名或密码。

格式(最初由 distutils 包定义)如下:

[distutils]
index-servers =
    first-repository
    second-repository

[first-repository]
repository = <first-repository URL>
username = <first-repository username>
password = <first-repository password>

[second-repository]
repository = <second-repository URL>
username = <second-repository username>
password = <second-repository password>

distutils 部分定义了一个 index-servers 字段,列出了描述仓库的所有部分的名称。

每个描述仓库的部分定义了三个字段:

  • repository:仓库的 URL。

  • username:在仓库中注册的用户名。

  • password:用于验证用户名的密码。

警告

请注意,这将密码以明文形式存储。为了更好的安全性,考虑使用 keyring、设置环境变量,或在命令行中提供密码。

否则,请设置 .pypirc 的权限,使得只有你自己可以查看或修改它。例如,在 Linux 或 macOS 上,运行:

chmod 600 ~/.pypirc

A .pypirc file allows you to define the configuration for package indexes (referred to here as "repositories"), so that you don't have to enter the URL, username, or password whenever you upload a package with twine or flit.

The format (originally defined by the distutils package) is:

[distutils]
index-servers =
    first-repository
    second-repository

[first-repository]
repository = <first-repository URL>
username = <first-repository username>
password = <first-repository password>

[second-repository]
repository = <second-repository URL>
username = <second-repository username>
password = <second-repository password>

The distutils section defines an index-servers field that lists the name of all sections describing a repository.

Each section describing a repository defines three fields:

  • repository: The URL of the repository.

  • username: The registered username on the repository.

  • password: The password that will used to authenticate the username.

警告

Be aware that this stores your password in plain text. For better security, consider an alternative like keyring, setting environment variables, or providing the password on the command line.

Otherwise, set the permissions on .pypirc so that only you can view or modify it. For example, on Linux or macOS, run:

chmod 600 ~/.pypirc

常用配置

Common configurations

备注

这些示例适用于 twine。其他项目(例如 flit)也使用 .pypirc,但默认设置不同。请参阅各个项目的文档以获取更多细节和使用说明。

Twine 的默认配置模仿了一个带有 PyPI 和 TestPyPI 仓库部分的 .pypirc

[distutils]
index-servers =
    pypi
    testpypi

[pypi]
repository = https://upload.pypi.org/legacy/

[testpypi]
repository = https://test.pypi.org/legacy/

Twine 会从 $HOME/.pypirc、命令行和环境变量中添加额外的配置到这个默认配置中。

备注

These examples apply to twine. Other projects (e.g. flit) also use .pypirc, but with different defaults. Please refer to each project's documentation for more details and usage instructions.

Twine's default configuration mimics a .pypirc with repository sections for PyPI and TestPyPI:

[distutils]
index-servers =
    pypi
    testpypi

[pypi]
repository = https://upload.pypi.org/legacy/

[testpypi]
repository = https://test.pypi.org/legacy/

Twine will add additional configuration from $HOME/.pypirc, the command line, and environment variables to this default configuration.

使用 PyPI 令牌

Using a PyPI token

要为 PyPI 设置 API token ,你可以创建一个类似于以下内容的 $HOME/.pypirc 文件:

[pypi]
username = __token__
password = <PyPI token>

对于 TestPyPI,添加一个 [testpypi] 部分,并使用来自你的 TestPyPI 账户的 API token。

To set your API token for PyPI, you can create a $HOME/.pypirc similar to:

[pypi]
username = __token__
password = <PyPI token>

For TestPyPI, add a [testpypi] section, using the API token from your TestPyPI account.

使用另一个包索引

Using another package index

要配置一个额外的仓库,你需要重新定义 index-servers 字段以包括仓库名称。以下是一个完整的 $HOME/.pypirc 示例,包含了 PyPI、TestPyPI 和一个私有仓库:

[distutils]
index-servers =
    pypi
    testpypi
    private-repository

[pypi]
username = __token__
password = <PyPI token>

[testpypi]
username = __token__
password = <TestPyPI token>

[private-repository]
repository = <private-repository URL>
username = <private-repository username>
password = <private-repository password>

警告

考虑使用 keyring 安全地保存你的 API token 和密码,而不是使用 password 字段(Twine 已安装 keyring):

keyring set https://upload.pypi.org/legacy/ __token__
keyring set https://test.pypi.org/legacy/ __token__
keyring set <private-repository URL> <private-repository username>

To configure an additional repository, you'll need to redefine the index-servers field to include the repository name. Here is a complete example of a $HOME/.pypirc for PyPI, TestPyPI, and a private repository:

[distutils]
index-servers =
    pypi
    testpypi
    private-repository

[pypi]
username = __token__
password = <PyPI token>

[testpypi]
username = __token__
password = <TestPyPI token>

[private-repository]
repository = <private-repository URL>
username = <private-repository username>
password = <private-repository password>

警告

Instead of using the password field, consider saving your API tokens and passwords securely using keyring (which is installed by Twine):

keyring set https://upload.pypi.org/legacy/ __token__
keyring set https://test.pypi.org/legacy/ __token__
keyring set <private-repository URL> <private-repository username>