持续集成,easy_install和下载问题

时间:2012-02-29 08:42:28

标签: python continuous-integration easy-install

我的一些python项目在持续集成下进行测试,其设置类似于此处描述的设置:"Pretty" Continuous Integration for Python

我目前使用easy_install来安装项目,它的依赖项和测试工具(鼻子,覆盖率)。

有时,我的构建报告失败,因为easy_install由于网络问题而无法下载依赖项:Internet连接,PyPI或其中一个软件包下载服务器已关闭或似乎没有响应

我希望通过使用本地缓存包来防止我的构建在这种情况下失败:当我们无法下载新的依赖项时,我们将使用本地的(在可能的情况下应该更新)。首先尝试下载新的依赖项对我来说很重要,因为我希望尽快通知我的项目由于依赖项中的API更改而中断。

我的问题是:我如何设置这样一个不会破坏网络问题的缓存?我首先尝试使用collective.eggproxy来解决这个问题,但就我所知,它并没有捕获所有错误。

4 个答案:

答案 0 :(得分:1)

您是否考虑过使用pip?如果是这样,您可以利用其对备用软件包存储库的支持:

http://www.pip-installer.org/en/latest/usage.html#alternate-package-repositories

如果您不想离开easy_install,可以尝试将--find-links选项与easy_install一起使用,为您关注的软件包提供一组基本链接。

答案 1 :(得分:1)

我赞同Amber使用pip。 pip提供至少3个支持斑点pypi访问的选项:

  1. 备用软件包存储库标记((-i索引网址和--find_links

  2. 中所述
  3. 可以使用PIP_DOWNLOAD_CACHE指定下载缓存。下载的文件将被缓存以供以后访问

  4. Creating a bundle of all of your dependencies

  5. 我们已经在所有这三个方面使用了这三个方面。很长一段时间我们只使用3,但我们已经使用basketweaver建立了自己的pypi服务器

    easy_install还支持--index-url标记,可让您指定其他索引,例如现有的pypi镜子之一:

    easy_install -i http://d.pypi.python.org/simple 
    

答案 2 :(得分:0)

如果你要运行你的构建服务器,我真的建议为你的构建提供pypi的本地缓存。如果只是为了不加载/真正膨胀用于构建的程序包数量,这些程序包可以一直发生。最近有一篇非常好的博客文章介绍了所有pypi中的一个:

http://aboutsimon.com/2012/02/24/create-a-local-pypi-mirror/

对于sprint,我最近使用pip技巧来设置我的应用程序所需的本地缓存:

http://paste.mitechie.com/show/548/

答案 3 :(得分:0)

我最终使用collective.eggproxy来缓存下载,但在运行collective.eggproxy作为守护程序后使用了启动延迟,以防止在easy_install collective.eggproxy easy_install之前发生错误1}}完全启动。

然而,建议使用pip的答案对我来说同样有效,但由于我已经使用collective.eggproxy和{{1}},因此我更容易坚持使用它们。