2

我和我的同事们目前正在采取一些步骤来自动化一个胚胎 python 代码库的测试,但是我们在环境设置和包管理方面遇到了一些问题。感谢您提供任何帮助,因为我们以前没有使用 Python 做过这件事(而且看起来有点……断裂)。

要求:

  • 测试可以通过脚本运行(鼻子看起来不错)
  • 它在windows机器上运行
  • 它可通过TeamCity以及标准开发人员机器运行。良好的 TeamCity 报告/集成将是一个奖励。
  • 我们应该能够调用脚本并在多台机器上获得正确、可重复的结果。
  • 所有依赖项/包要求都以一种简单、可重复的方式得到满足(我们使用 ruby​​ 和 bundler 对我们的主代码库执行此操作,并且正在努力使用 python 重复这个技巧)。如果人们不得不手动安装鸡蛋/使用easy_install等,那将是地狱般的。您应该能够调用一个脚本,上面写着“请确保考虑到这些依赖关系,然后运行我们的测试”。

理想情况下,工作流程应该像这样工作(暂时忽略我们如何安装/获取 python):

  • Windows 机器同步到我们的 SCM
  • 机器运行一个脚本以确保所有 python 依赖项(Shapely 等)都被考虑在内
  • 机器能够调用运行nose或其他一些测试运行器的脚本
  • 脚本返回一个值来指示构建是否失败

积分问题

我们愿意在每台开发机器/构建代理上安装 python,而不是将其签入源代码控制,尽管如果我们可以将其签入并忘记它会很好。到目前为止,我们在这方面最好的选择是将 python 安装目录与 Windows/System32 中的 pythonxx.dll 一起检查到 SCM 中,但我不确定这是否是一种有缺陷的方法。

我们发现了 Movable PythonPortable Python。知道最好的方法是什么吗?就像我说的,如果这不可行,我们愿意硬着头皮在每台机器上使用 .msi 安装 python。

干杯!

4

1 回答 1

0

在没有更好的情况下,我们通过反复试验来解决这个问题。目前,我们的代码库很小,因此这种方法可能存在尚未暴露的缺陷,但我们目前正在使用它。

最后,我们:

  • 将PortablePython 2.7添加到 SCM。这只是工作(tm)。
  • 向 SCM添加curl
  • 创建了一个调用 curl 并下拉并安装 python 设置工具的 windows .bat 文件。然后我们通过安装工具(元打包 ahoy)安装 pip。然后针对需求文件运行 Pip。pip 需求文件包含nose(一个python 测试运行器)和teamcity-nose(用于nose 的TeamCity CI 集成)等等。

然后我们调用测试运行器,它会自动将我们的测试挂起来,没有任何麻烦。不错!

将来还要检查virtualenv

编辑(未来 N 年):

Pip 在 Python 2.7.9 及更高版本中成为标准。这些天(imo)最简单的做事方式是:

  1. 使用 pip 开箱即用
  2. 安装虚拟环境
  3. 为项目创建一个 virtualenv 并激活它
  4. 使用 pip 安装依赖项(不幸的是,有时不得不回退到 easy_install)
  5. 迪斯科。

另外,除非你真的需要它,否则不要使用便携式 python。真希望我们不要就此安定下来。

于 2012-05-10T20:01:22.313 回答