Python中用于可重复环境的工具(或工具组合)

9

我曾是一名Java开发人员,我们使用像Ant或Maven这样的工具以标准化的方式管理开发/测试/UAT环境。这使我们可以处理库依赖项、设置操作系统变量、编译、部署、运行单元测试以及完成所有所需任务。此外,生成的脚本保证了所有环境的配置几乎相同,并且所有团队成员以相同的方式执行所有任务。

我现在开始从事Python工作,想请您建议我使用哪些工具来实现与Java相同的功能。

7个回答

18
  1. virtualenv 能够创建隔离的虚拟环境,防止不同版本的Python或Python包互相影响。越来越多的人开始使用这个工具。作者与Aaron提到的旧版working-env.py是同一个人。

  2. pip 可以在虚拟环境中安装包。传统的方法是easy_install,S. Lott也提到了这点,但是pip在虚拟环境下运行更好。不过easy_install仍然有pip没有的一些功能。

  3. scons 作为构建工具,但是如果你只使用Python的话就用不到它。

  4. Fabric、paste或者paver 用于部署。

  5. buildbot 用于持续集成。

  6. Bazaar、mercurial或git用于版本控制。

  7. Nose 作为扩展的单元测试工具。

  8. PyFit 用于FIT测试。


3

setuptools 对我来说很痛苦。 - anatoly techtonik

2
除了easy_install之外还有什么选择?
对于我们的Linux服务器,我们使用easy_install和yum。
对于我们的Windows开发笔记本电脑,我们使用easy_install和一些MSI文件来完成某些项目。
我们使用的大多数Python库都是源代码,因此我们可以在所有设备上使用相同的分发版。如果我们能够拥有一个网络共享设备,我们会将它们全部放在那里。不幸的是,我们的基础设施有点分散,所以我们必须要么移动.TAR文件,要么重新安装以重建环境。
在某些情况下(例如PIL),我们必须重新编译并检查版本号。

2
您需要 easy_setup 来获取蛋(大致上与 Maven 中的 artifact 相似)。
关于设置您的环境,请查看 working-env.py
Python 不是编译型语言,但您可以将项目的所有文件放在一个蛋中。这可以通过 setuptools 实现。
有关 CI,请查看 this answer

2
我们也不应该忘记提到Paver,这是由TurboGears的创始人Kevin Dangoor创建的。虽然该项目仍处于alpha版,但看起来非常有前途。以下是该项目页面的一段摘录:
Paver是一个基于Python的构建/分发/部署脚本工具,类似于Make或Rake。Paver之所以独特,是因为它与常用的Python库集成在一起。以前容易完成的常见任务仍然很容易。更重要的是,现在处理应用程序特定需求和要求变得更加容易了。

0
你可能想要检查一下我们的Devenv。它允许您标准化开发、QA和UAT的构建环境。它是免费的,就像“免费啤酒”一样。
希望对你有所帮助。

0

我使用setuptools和Hudson的组合来实现这一点。我知道Hudson是一个Java应用程序,但它可以很好地运行Python代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接