【发布时间】:2010-12-14 01:43:52
【问题描述】:
组织和开发由许多共享一个(或多个)较大 Python 库的小脚本组成的项目的最佳方法是什么?
我们的存储库中有一堆程序,它们都使用存储在同一个存储库中的相同库。所以换句话说,像
这样的布局trunk
libs
python
utilities
projects
projA
projB
当我们的程序正式运行完成后,我们想记录下使用了哪个版本的代码。对于我们的 C++ 可执行文件,事情很简单,因为只要工作副本在编译时是干净的,一切都很好。 (而且由于我们以编程方式获取版本号,因此它必须是工作副本,而不是导出。)对于 Python 脚本,事情就更复杂了。
问题在于,通常会运行一个项目(例如 projA),而 projB 需要更新。这可能会导致工作副本修订在运行时与 projA 混在一起。 (代码需要数小时才能运行,并且可以用作需要数天才能运行的流程的输入,因此具有强大的可追溯性目标。)
我目前的解决方法是,如有必要,将主干的另一个副本检查到不同的位置,然后从那里跑掉。但是我需要记住将我的 PYTHONPATH 更改为指向 lib/python 的第二个版本,而不是第一个树中的那个。
不可能有一个完美的答案。但一定有更好的办法。
我们是否应该使用 subversion 关键字来存储修订号,这将允许数据用户导出文件?我们应该使用 virtualenv 吗?我们是否应该更倾向于打包和安装机制? Setuptools 是标准,但我读过关于它的混合内容,它似乎是为非开发人员最终用户设计的(我们没有)。
【问题讨论】:
-
您是说在实时代码使用它们的同时更改生产库吗?
-
我是说这有可能发生。在我正式运行这些程序时,确实发生了类似的事情。我没有更改当前使用的工作副本中的任何代码,但 svn 不知道,所以它说它是一个混合存储库。我的跑步抛出了一个异常,这是应该的。由于该项目中的大多数人都不关心使用干净的副本,因此我希望尽可能减少这种可能性。
标签: python svn version-control code-organization