PyPI 是 Python 包索引。其目的是帮助 Python 开发人员查找和安装 Python 社区开发的软件。

我最近构建了我的第一个 Python 包patter,并通过 PyPI 公开发布。在此过程中我遇到了一些小问题,所以我写这篇文章是为了帮助那些处于类似位置的人。

这篇文章将描述 .pypirc 文件的基础知识以及如何配置和保护它。我最初为Truveris Engineering 博客写了这篇文章,我在这里重新发布它以扩大影响范围。

入门

在继续之前,最好确保setuptoolswheel库是最新的。如果需要,以下命令将更新它们:

$ pip install -U setuptools wheel

进入全屏模式 退出全屏模式

这篇文章将假设你有一个可以发布的新 Python 库。应使用如下命令打包源代码。根据包的需要,您的命令可能会略有不同。

$ python setup.py sdist bdist_wheel

进入全屏模式 退出全屏模式

要阅读有关创建可分发 Python 包的更多信息,请参阅这些文档。

在下一节中,我使用twine实用程序来帮助发布我的新包。您可以在此处阅读twine相对于内置打包工具的好处。使用以下命令安装twine:

$ pip install twine

进入全屏模式 退出全屏模式

.pypirc 文件

使用.pypirc文件有两个主要好处:

  1. 推送到 PyPI 时无需输入用户名/密码。

  2. 它简化了将包推送到非默认包存储库(即 pypi.org 以外的任何地方)时的命令行使用。

关于.pypirc文件的官方文档可以在这里找到。我的.pypirc文件的内容如下所示。该文件必须放在$HOME/.pypirc中,pip/twine 才能使用它。

    [distutils]
    index-servers=
        pypi
        testpypi

    [pypi]
    username: brodan
    password: xxxxxxxxxxxxxxxx

    [testpypi]
    repository: https://test.pypi.org/legacy/
    username: brodan
    password: yyyyyyyyyyyyyyyy

进入全屏模式 退出全屏模式

请记住,pypi.org和test.pypi.org未集成,因此您需要在每个站点上创建一个单独的帐户。

上面要注意的一件事是[pypi]部分没有配置repository,但testpypi部分有。那是因为repository变量默认为https://upload.pypi.org/legacy/,所以它不需要包含在该部分中。

上传Python包

一旦上面的文件就位,--repository标志现在可以与twine一起使用来指定您的包将被上传到哪个包存储库:

如果您希望将包上传到 TestPyPI 存储库,则应使用以下命令:

$ twine upload --repository testpypi dist/*

进入全屏模式 退出全屏模式

同样,一旦包准备好向公众发布,应使用以下内容:

$ twine upload --repository pypi dist/*

进入全屏模式 退出全屏模式

请注意,运行上述任一命令时都不会提示您输入密码。您也不再需要将存储库 URL 复制并粘贴到终端中。

保护 .pypirc 文件

由于.pypirc文件以纯文本形式存储敏感信息(即密码),因此必须相应地设置此文件的权限,以便系统上的其他用户无法访问此文件。

为此,请运行以下命令:

$ chmod 600 ~/.pypirc

进入全屏模式 退出全屏模式

上面的命令将确保只有文件所有者(应该是您自己的用户)才能读取和写入该文件。有关 UNIX 中文件权限的其他信息,请参见此处的。感谢这个 StackOverflow 回答以获得本节的帮助。

结束

有了.pypirc文件,将 Python 包推送到公共存储库的过程现在要容易得多。

如果您对这篇文章有任何问题或反馈,请通过电子邮件或Twitter与我联系。谢谢阅读!

Logo

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!

更多推荐