2017-06-15 82 views
2

基本上我们有一个Python库,包含我们在许多程序中使用的模块和函数。目前,我们直接将SVN信息库检出到C:\ Python27 \ Lib中,以便该库位于Python路径中。当有人对库进行修改时,每个人都会更新以获取这些修改。处理Python库包的最佳实践是什么?

我们的一些程序被冻结(使用cx-Freeze)并交付,因此我们必须跟踪交付中使用的库版本,但cx-Freeze会自动打包导入代码中的模块。

  • 我不认为这是要靠人来验证他们在库中没有未提交的本地修改,或者他们是最新的冻结任何程序导入前一个好主意。

  • 我们唯一跟踪的版本号是库存储库的提交号,它没有链接任何地方到程序交付版本,并且在我看来不应该用作库的交付版本。

我想使用一个setup.py打造该库的特定版本的分发,然后表明版本在程序的项目文件夹中的requirements.txt文件导入,但随后如果我们想对该库进行修改,则会变得复杂,因为每次我们要测试它时都必须构建和安装一个分发版。这并不复杂,但我认为有人会冻结一个程序与该库的测试版本,它回到了开始...

我一直在寻找一个最佳实践的具体情况,但我什么也没找到,有任何想法吗?

+1

欢迎来到StackOverflow。请阅读并遵守帮助文档中的发布准则。[在主题](http://stackoverflow.com/help/on-topic)和[如何提问](http://stackoverflow.com/help/how-to-ask)适用于此处。 – Prune

回答

0

最终你将不得不相信你的用户去关注你所建立的开发过程。你可以创建工具来简化这些工作,但你总是会得到一些信任。

的事情,一直有帮助的一些人包括:

  • 所有冷冻/出货的可执行文件的建立由像BuildBot或詹金斯,而不是由个人开发者都建立在中央台机器上。这给了你一个中心点,确保从干净的结账中发货。

  • 如果存在未提交的更改,请提供执行构建和出错的脚本。

  • 如有可能是有价值的使人们有可能在你的发行版的源代码树点PYTHONPATH和有工作的事情,即使是有setup.py,可以建立分布。这使测试更容易。与往常一样,确保用于构建发货版本的工具检查此问题,如果发生问题则会失败。

我个人认为,对于包含在闭源应用程序中的库的干净标记的颠覆检出,我认为发行版有很多价值。 你可以采取任何一种方法,但我认为你会发现关键在于具有良好的自动化,无论你选择哪种方式,而不是分配和颠覆结账的答案