.pypirc
文件¶
The .pypirc
file
.pypirc
文件允许你为 package indexes (在此称为“仓库”)定义配置,这样你就不必在每次使用 twine 或 flit 上传包时输入 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 的默认配置模仿了一个带有 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
使用另一个包索引¶
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>