我曾经是一名 Java 开发人员,我们使用 ant 或 maven 等工具以标准化的方式管理我们的开发/测试/UAT 环境。这使我们能够处理库依赖关系、设置操作系统变量、编译、部署、运行单元测试以及所有必需的任务。此外,生成的脚本保证了所有环境的配置几乎相同,并且所有任务都由团队的所有成员以相同的方式执行。
我现在开始在 Python 中工作,我希望得到您的建议,我应该使用哪些工具来完成与 java 中描述的相同的操作。
我曾经是一名 Java 开发人员,我们使用 ant 或 maven 等工具以标准化的方式管理我们的开发/测试/UAT 环境。这使我们能够处理库依赖关系、设置操作系统变量、编译、部署、运行单元测试以及所有必需的任务。此外,生成的脚本保证了所有环境的配置几乎相同,并且所有任务都由团队的所有成员以相同的方式执行。
我现在开始在 Python 中工作,我希望得到您的建议,我应该使用哪些工具来完成与 java 中描述的相同的操作。
virtualenv创建一个包含的虚拟环境(防止不同版本的 Python 或 Python 包相互踩踏)。人们越来越多地转向这个工具。作者与 Aaron 提到的旧版 working-env.py 相同。
pip在 virtualenv 中安装包。S. Lott 回答的传统是 easy_install,但 pip 与 virtualenv 配合得更好。不过,easy_install 仍然具有 pip 中没有的功能。
scons作为构建工具,尽管如果你保持纯粹的 Python 就不需要它。
buildbot用于持续集成。
用于版本控制的 Bazaar、mercurial 或 git。
鼻子作为单元测试的扩展。
我也使用 java 和 python。对于 python 开发,maven 等价物是 setuptools ( http://peak.telecommunity.com/DevCenter/setuptools )。对于 Web 应用程序开发,我将它与 paster ( http://pythonpaste.org/ ) 结合用于部署过程
除了easy_install吗?
对于我们的 Linux 服务器,我们使用 easy_install 和 yum。
对于我们的 Windows 开发笔记本电脑,我们将 easy_install 和一些 MSI 用于某些项目。
我们使用的大多数 Python 库都是纯源代码,因此我们可以在所有盒子上使用相同的分布。如果我们可以有一个网络共享设备,我们会把它们都放在那里。可悲的是,我们的基础设施有点分散,所以我们必须移动 .TAR 文件或重新安装以重建环境。
在少数情况下(例如,PIL),我们必须重新编译并检查版本号。
您将需要easy_setup来获取鸡蛋(大致 Maven 称之为工件)。
要设置您的环境,请查看working-env.py
Python 没有被编译,但是你可以将一个项目的所有文件放在一个 egg 中。这是使用setuptools完成的
对于 CI,请检查此答案。
更不用说由TurboGears的 Kevin Dangoor 创建的Paver了。该项目仍处于 alpha 阶段,但看起来很有希望。项目页面的片段:
Paver 是一个基于 Python 的构建/分发/部署脚本工具,类似于 Make 或 Rake。Paver 的独特之处在于它与常用的 Python 库的集成。以前很容易的常见任务仍然很容易。更重要的是,现在处理您的应用程序的特定需求和要求要容易得多。
我使用 setuptools 和 Hudson 的组合来做到这一点。我知道 Hudson 是一个 java 应用程序,但它可以很好地运行 Python 的东西。
您可能想查看我们的Devenv。它允许您标准化用于开发、QA 和 UAT 的构建环境。它是免费的,就像“免费啤酒”一样。
高温高压