我如何使用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格式接收此数据,以便能更容易地进行处理。

添加必要内容:

建议包括:

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

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

一个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

译者:好酒不上头

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190816A048HX00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券