【问题标题】:Tool (or combination of tools) for reproducible environments in Python用于 Python 中可重现环境的工具(或工具组合)
【发布时间】:2010-10-07 10:33:51
【问题描述】:
我曾经是一名 java 开发人员,我们使用 ant 或 maven 等工具以标准化的方式管理我们的开发/测试/UAT 环境。这使我们能够处理库依赖关系、设置操作系统变量、编译、部署、运行单元测试以及所有必需的任务。此外,生成的脚本保证了所有环境的配置几乎相同,并且所有任务都由团队的所有成员以相同的方式执行。
我现在开始在 Python 中工作,我希望您能建议我应该使用哪些工具来完成与 java 中描述的相同的工作。
【问题讨论】:
标签:
python
continuous-integration
installation
development-environment
automated-deploy
【解决方案1】:
您可能想查看我们的Devenv。它允许您标准化用于开发、QA 和 UAT 的构建环境。它是免费的,就像“免费啤酒”一样。
HTH
【解决方案2】:
更不用说Paver,它是由TurboGears 成名的Kevin Dangoor 创建的。该项目仍处于 alpha 阶段,但看起来很有希望。来自项目页面的 sn-p:
Paver 是一个基于 Python 的构建/分发/部署脚本工具,类似于 Make 或 Rake。 Paver 的独特之处在于它与常用的 Python 库的集成。以前很容易的常见任务仍然很容易。更重要的是,现在处理您的应用程序的特定需求和要求变得更加容易。
【解决方案3】:
virtualenv 创建一个包含的虚拟环境(防止不同版本的 Python 或 Python 包相互踩踏)。人们越来越多地转向这个工具。作者与Aaron提到的旧版working-env.py相同。
pip 在 virtualenv 中安装包。 S. Lott 回答的传统是 easy_install,但 pip 与 virtualenv 配合得更好。不过,easy_install 仍然具有 pip 中没有的功能。
scons 作为构建工具,但如果你只使用 Python,则不需要它。
Fabric 粘贴,或paver 用于部署。
buildbot 用于持续集成。
用于版本控制的 Bazaar、mercurial 或 git。
Nose 作为单元测试的扩展。
PyFit 用于FIT 测试。
【解决方案4】:
我正是使用 setuptools 和 Hudson 的组合来做到这一点的。我知道 Hudson 是一个 java 应用程序,但它可以很好地运行 Python 的东西。
【解决方案7】:
easy_install以外的?
对于我们的 Linux 服务器,我们使用 easy_install 和 yum。
对于我们的 Windows 开发笔记本电脑,我们将 easy_install 和一些 MSI 用于某些项目。
我们使用的大多数 Python 库都是源代码库,因此我们可以在所有盒子上使用相同的分布。如果我们可以有一个网络共享设备,我们会把它们都放在那里。遗憾的是,我们的基础架构有点分散,因此我们必须移动 .TAR 文件或重新安装以重建环境。
在少数情况下(例如 PIL),我们必须重新编译并检查版本号。