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

时间:2017-08-30 07:32:32

标签: python publish pypi

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

对于我个人使用,我可以简单地捆绑和安装所有辅助模块。

但是,如果我想在PyPI上发布项目,那么最合适的方法是什么?将辅助模块作为包发布是否合适 - 即使它们几乎没有意义捆绑,除了当他们使用我的其他项目时对任何人都没有用,然后需要为每个模块安装辅助模块我的其他项目?

1 个答案:

答案 0 :(得分:1)

将像这样的库拆分为单独的" project" / package并不罕见,例如krux/tcp-stream-kafka-producer基于krux/java-stdlib(随机示例 - 因为我正在浏览昨天回购...)

因此,我建议您将实用程序命名为<something>-util(或&#34;各种&#34;或&#34; stuff&#34; :))并将其作为模块单独发布在pipy上。这是更简洁的方法,因为它允许不同的项目使用底层lib的不同版本,而无需维护该库的多个副本并具有清晰的版本控制/依赖性。

您的其他选择:

  1. 将库包含在最受欢迎的项目中:这会导致项目依赖性无法真正理解。例如,如果该项目更改主要版本,受影响的项目是否受到影响? (你不知道)

  2. 在您使用的每个项目中复制:这可能会在短时间内和一些项目中正常运行,但是,很快您将无法跟踪更改并且常见文件将不同步。我之前已经这样做了,花几个小时来调试你已经在另一个项目中修补过的内容非常烦人!

  3. 我将其作为一个单独的包发布的唯一缺点是你必须小心冲突:即一个项目需要v0.1.1而不是v0.1.0,而B项目是另一种方式。值得庆幸的是,python venv可以帮助解决此类问题。

    希望有所帮助