我有几个共享通用模块的 python 项目。直到现在,我一直在……咳咳……保留公共代码的多个副本并手动同步。但我显然更愿意做其他事情。
现在在我看来,好像 zc.Buildout 可能是我需要的。我想我应该做的是将系统的每个可重用组件放入一个单独的鸡蛋中,然后使用 buildout 将它们组装成项目。
我还认为对于任何特定模块,我应该将单元测试放入单独的包或鸡蛋中,这样我就不会在每个项目中安装组件的单元测试副本。我只想在开发我的库的地方进行单元测试,而不是在刚刚使用它的地方进行单元测试。
所以也许我想要这样的东西
projects
lib1
tests
code
lib2
tests
code
app1
tests
appcode
app2
tests
appcode
等等
其中 app1 和 app2 都是具有自己的代码和测试的独立应用程序,但也包含并使用 lib1 和 lib2。而 lib1/test、lib1/code、lib2/test、lib2code、app1、app2 是独立的鸡蛋。这听起来对吗?
然而,我现在很困惑。我假设当我开发 app1 时,我希望 buildout 将 lib1、lib2 和 app1 的副本拉到单独的工作目录中,而不是将这些库的副本直接放在 app1 下。但这如何与我的 SVN 源代码控制一起使用?如果工作目录是使用 buildout 动态构建的,它不能是一个实时 SVN 目录,我可以从中将更改检查回存储库吗?
我是否误解了 buildout 的使用方式?我会更好地采用完全不同的方法吗?你如何在项目之间混合源代码控制和模块重用?
更新:感谢目前已回答此问题的两个人。我正在对此进行更多实验。