使用Python库包的最佳实践是什么?

使用Python库包的最佳实践是什么?,python,windows,python-2.7,Python,Windows,Python 2.7,基本上,我们有一个Python库,其中包含我们在许多程序中使用的模块和函数。目前,我们将SVN存储库直接签出到C:\Python27\Lib中,以便该库位于Python路径中。当有人对库进行修改时,每个人都会更新以获得这些修改 我们的一些程序被冻结(使用cx Freeze)并交付,因此我们必须跟踪交付中使用的库版本,但cx Freeze会自动打包代码中导入的模块 我认为,在冻结任何导入库的程序之前,依靠人们来验证库中没有未提交的本地更改,或者它们是最新的,这不是一个好主意 我们唯一的版本跟踪是

基本上,我们有一个Python库,其中包含我们在许多程序中使用的模块和函数。目前,我们将SVN存储库直接签出到C:\Python27\Lib中,以便该库位于Python路径中。当有人对库进行修改时,每个人都会更新以获得这些修改

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

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

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

我正在考虑使用setup.py来构建该库的特定版本的发行版,然后在导入该库的程序的项目文件夹中的requirements.txt文件中指明该版本,但是,如果我们想对该库进行修改,那么它就变得复杂了,因为每次我们想测试它时,我们都必须构建并安装一个发行版。这并没有那么复杂,但我认为有人会用该库的测试版本冻结一个程序,然后它会回到开始


我一直在寻找针对该特定案例的最佳实践,但我没有找到任何想法?

最终,您将不得不相信您的用户会遵循您建立的开发流程。您可以创建工具来简化这一过程,但最终您总会获得一些信任

对许多人有帮助的事情包括:

  • 所有冻结/发布的可执行文件构建都是由BuildBot或Jenkins之类的东西在中央计算机上构建的,而不是由单个开发人员构建的。这为您提供了一个中心点,以确保构建是从干净的签出发货的

  • 如果有未提交的更改,请提供执行生成和出错的脚本

  • 在可能的情况下,将
    PYTHONPATH
    指向发行版的源代码树并使其正常工作是很有价值的,即使有
    setup.py
    可以构建发行版。这使得测试更容易。和往常一样,请确保用于构建附带版本的工具检查此问题,如果出现此问题,则会失败

我个人并不认为发行版比封闭源代码应用程序中包含的库的干净标记subversion签出更有价值。
您可以采用任何一种方法,但我认为您会发现,关键在于选择哪种方法都能实现良好的自动化,而不是在distribution vs subversion checkout的答案中

欢迎使用StackOverflow。请阅读并遵循帮助文档中的发布指南。在这里申请。