现在看来,zc.Buildout可能是我需要的东西。我想我应该将系统中每个可重用的组件放入单独的egg中,然后使用buildout将它们组装成项目。
我还在考虑,对于任何特定模块,我应该将单元测试放入单独的包或egg中,这样我就不必在每个项目中安装组件的单元测试副本。我只想在开发库的地方进行单元测试,而不是在仅使用库的地方。
所以也许我需要像这样的东西。
projects
lib1
tests
code
lib2
tests
code
app1
tests
appcode
app2
tests
appcode
在这种情况下,app1和app2是独立的应用程序,拥有自己的代码和测试,但也包含并使用lib1和lib2。而lib1/test、lib1/code、lib2/test、lib2/code、app1和app2是单独的egg文件。这听起来对吗?
然而,我现在感到困惑。我认为当我开发app1时,我希望buildout将lib1、lib2和app1的副本拉入一个单独的工作目录,而不是直接将这些库的副本放在app1下。但是这如何与我的SVN源代码控制一起工作呢?如果工作目录是动态构建的buildout,它不能是一个实时的SVN目录,我无法将更改检查回存储库中。
我是否误解了buildout的使用方式?我是否应该采取完全不同的方法?如何在项目之间混合使用源代码控制和模块重用?
更新:感谢两位回答了这个问题的人。我正在进行更多的实验。