我们有一个不断增长的应用程序库,依赖于一组通用util模块。我们想:
- 在所有项目之间共享相同的utils代码库
- 允许开发人员在任何项目上扩展(和修复)utils
- 让这对开发者来说使用起来相当简单(即不会对工作流程造成很大的干扰)
- 跨平台(mac/Win/Linux上没有差异)
我们目前是"手动"完成的,将utils版本作为每个应用程序的一部分。这有它的好处,但在越来越多的代码库中反复修复错误也是相当痛苦的。
好的方面是,在工作流方面处理起来非常简单- util模块是每个应用程序的一部分,所以在这方面没有任何开销。
我们还考虑过(短暂地)使用文件系统链接或其他类似的(在操作系统之间不可移植)
我理解关于发布测试和破坏的含义,等等。这些问题比当前不匹配的utils问题要小。
您可以利用Python路径(查找要导入的模块时搜索的路径)。
因此,您可以为utils创建不同的目录,并将其包含在与使用这些utils的项目不同的存储库中。然后在PYTHONPATH
中包含此存储库的路径。
这样,如果您写入import mymodule
,它最终会在包含utils的目录中找到mymodule
。因此,基本上,的工作方式与标准Python模块的工作方式相似。
这样,您将拥有一个utils存储库(或者每个util单独使用,如果您愿意),以及其他项目的, 单独的存储库,而不管您使用的是哪种版本控制系统。
您使用的是什么版本控制系统?如果您在git下,请查看子模块。在这种情况下的想法是,您将能够保持一个唯一的,独立的库与utils,它将自动轮询到各个项目。
我没有使用mercurial的直接经验,但我相信子存储库具有相同的功能。
如果您在SVN下…等待……我希望不是!:)