Python包装:如何处理我在大多数项目中使用的辅助模块



我在不同项目中使用了许多辅助模块。例如,这些辅助模块包含一些用于记录,文件,装饰器等的代码。

为了个人使用,我可以简单地捆绑并安装所有辅助模块。

如果我想在PYPI上发布我的项目,但是,最合适的方法是什么?也可以将辅助模块作为包装发布是否合适 - 即使它们几乎没有意义,对于任何人来说,除了使用我的其他项目时都没有任何帮助 - 然后需要为每个项目安装该辅助软件包我的其他项目?

将类似这样的库分为单独的" project"/package,例如krux/tcp-stream-kafka-producer并不少见 - 仅仅因为我昨天浏览了存储库...)

因此,我建议您将实用程序称为<something>-util(或"多种"或" Quft" :)),并将其单独释放为Pipy上的模块。这是这样做的清洁方法,因为它允许不同的项目使用不同版本的基础自由,而无需维护该库的多个副本,并且具有清晰的版本/依赖项。

您的其他选项:

  1. 将库包括在最受欢迎的项目中:这导致项目依赖性真正没有意义。例如,如果该项目更改了主要版本,是否受到依赖项目?(您不知道)

  2. 在您使用的每个项目中复制:这可能可以在短时间内和一些项目中可以使用,但是,很快您将失去更改的跟踪,常见文件将失去同步。我以前做过,这很烦人,花了几个小时来调试您在另一个项目中已经修补的东西!

我看到的唯一缺点是将其释放为一个单独的软件包,即您必须谨慎冲突:即一个项目需要v0.1.1而不是v0.1.0,而B项目是相反的。值得庆幸的是,Python venv可以在这种情况下提供帮助。

希望它有帮助

最新更新