我如何使用Flit将我的第一个Python包发布到PyPi
收藏

一周前,我按照一些步骤将我的第一个python包发布到Python Packaging index(Python包索引)中,以下是我对我所遵循的快速、简单的过程的描述,你也可以这样做。


发布包的PyPi着陆页


首先,我们来学习什么是PyPi和 pip。


导入是什么?


我们用一个例子来解释这一点:当你将两个python文件(命名为file1.py和file2.py)放在同一个文件夹中时,你可以使用import关键字导入一个文件的代码,以便在另一个文件中使用;



这是因为你的当前目录总是PATH的一部分;在这里,你的程序会搜索导入的模块,以便在运行代码时使用它们。


什么是pip & PyPi?


PyPi是一个在线包注册中心,python包/模块被保存在这里,以便想要使用它们的用户可以轻松地下载它们。


它们都是使用pip下载的。



当你执行一个pip安装时,pip会从PyPi下载该包的Python文件并将其存储在你的计算机上。它们存储的位置通常在安装Python时会被添加到PATH中,因此,它们总是能被import命令看到,并且很容易被导入,以便在程序中使用。


我是如何找到灵感的


我当时在收听Mariatta Wijaya主持的播客(这里!https://archive.org/details/castalio-podcast-114  ),她讲述了她是如何在PyCon Cascades间隙开发出一个包项目tic-tok-taco-pizza的。她谈到了她是如何使用flit的,这是一个打包工具,与传统的打包方法相比,它使打包更轻巧更容易。

考虑到这一点,我决定将flit应用到我非常长的待办清单上的一个项目来尝试一下打包。


我为什么要创建一个包?


目前,从bmrs数据源返回的数据的唯一格式是XML。此项目旨在使用户能够以JSON/dict格式接收此数据,以便能更容易地进行处理。


添加必要内容:

建议包括:

  1.  一个好的README——在你的repo上提供一个你的项目的描述性概述。

  2. 如果这是一个协作/开源项目,则需要提供一份贡献指南——就其他感兴趣的团体如何贡献更改和提议提供建议。

  3. 一个requirements.txt文件——包含所需的模块和导入项。这可以通过运行以下命令(在你的虚拟环境中)来实现。




发布包的步骤


在PyPi注册一个免费帐户,并为下一步准备好密码。要安装flit包,请运行:



首先,定义你的主包文件,把它放在主目录中,并添加元数据(版本信息是必须的)和一个包说明的文档字符串:



然后,在你的项目目录中运行:



该命令将会询问你关于你的项目的细节,比如:



主页是包的网站,可以是一个到git repo的链接。


许可证:你可以在http://choosealicense.com/  上查看不同类型的许可证。我为我们的开源项目选择了MIT许可证。成功完成此步骤会向你的项目目录中添加一个LICENSE文件和一个包含包元数据的pyproject.toml文件。


向你的pyproject.toml文件添加更多的元数据


访问https://buildmedia.readthedocs.org/media/pdf/flit/latest/flit.pdf  并从文档中的示例中查找可以添加到你的toml文件中的其他数据字段。

最后


现在,你可以使用以下命令将你的包发布到PyPi:



恭喜你!如果上面的所有步骤都成功了,那你现在就应该可以使用pip来安装你的包了。


你也可以在PyPi和Github上查看我发布的包。


注意:在重新发布一个包或推送更改之前,请始终记得修改版本号。


待办事项


使用Circle-CI启用包自动发布。


你现在难道还不准备发布自己的软件包吗?去发布吧,并在评论中分享它的链接!

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

本文作者是Cobblestone Energy limited的一个软件开发人员(顾问)、DevCKla的社区负责人、赛艇手、PyKampala的联合组织者。我对开发者社区、开源、旅行、阅读/写作和家庭充满热情!请随时在Facebook或Linkedin上联系我。


英文原文:https://medium.com/developer-circle-kampala/grow-your-python-how-i-published-my-first-python-package-to-pypi-162c3c709349
译者:好酒不上头

官方公众号