组织和开发由许多共享一个(或多个)较大 Python 库的小脚本组成的项目的最佳方法是什么?
我们的存储库中有一堆程序,它们都使用存储在同一个存储库中的相同库。所以换句话说,布局像
trunk
libs
python
utilities
projects
projA
projB
当我们的程序正式运行完成后,我们要记录使用的代码版本。对于我们的 C++ 可执行文件,事情很简单,因为只要工作副本在编译时是干净的,一切都很好。(而且由于我们以编程方式获取版本号,因此它必须是工作副本,而不是导出。)对于 Python 脚本,事情要复杂得多。
问题是,通常会运行一个项目(例如 projA),而 projB 需要更新。这可能会导致工作副本修订在运行时与 projA 混合出现。(代码需要数小时才能运行,并且可以用作需要数天才能运行的流程的输入,因此具有强大的可追溯性目标。)
我目前的解决方法是,如有必要,将主干的另一个副本检查到不同的位置,然后从那里跑掉。但是我需要记住将我的 PYTHONPATH 更改为指向 lib/python 的第二个版本,而不是第一个树中的那个。
不可能有一个完美的答案。但必须有更好的方法。
我们是否应该使用颠覆关键字来存储修订号,从而允许数据用户导出文件?我们应该使用 virtualenv 吗?我们是否应该更倾向于打包和安装机制?Setuptools 是标准,但我读过关于它的混合内容,它似乎是为非开发人员最终用户设计的(我们没有)。