在积极开发的应用之间共享util模块

时间:2011-12-13 09:34:39

标签: python

我们有一个不断增长的应用程序库,具体取决于一组常用的util模块。我们想:

  1. 在所有项目之间共享相同的utils代码库
  2. 允许工作在任何项目的开发人员扩展(并修复!)
  3. 这对开发者来说使用起来相当简单(即对工作流程没有太大影响)
  4. 跨平台(Macs / Win / Linux上的开发人员没有差异)
  5. 我们目前“手动”执行此操作,将utils版本化为每个应用程序的一部分。这有其好处,但是反复修复越来越多的代码库中的错误也非常痛苦。

    从好的方面来说,在工作流程方面处理起来非常简单 - util模块是每个应用程序的一部分,所以在这一方面没有开销。

    我们还考虑(稍纵)使用文件系统链接或其他类似的东西(不能在OS之间移植)

    我理解发布测试和破坏等的含义。这些问题比目前不匹配的工具更少。

2 个答案:

答案 0 :(得分:3)

您可以利用Python路径(在查找要导入的模块时搜索的路径)。

因此,您可以为utils 创建不同的目录,并将其包含在与使用这些utils的项目不同的存储库中。然后在PYTHONPATH中包含此存储库的路径。

这样,如果你编写import mymodule,它最终会在包含utils的目录中找到mymodule。所以,基本上,它的工作方式与标准Python模块类似

通过这种方式,您将拥有一个用于utils的存储库(或者如果您愿意,可以单独用于每个util),以及用于其他项目的单独存储库,无论您使用何种版本控制系统< /强>

答案 1 :(得分:1)

你在使用什么版本系统?如果您在 git 下,请查看submodules。在这种情况下的想法是,您将能够与utils保持一个独特的独立存储库,这些存储库将自动轮询到各个项目中。

我对 mercurial 没有直接经验,但我相信subrepositories是等效功能。

如果你是SVN ......等等......我希望不是! :)