我的一些python项目在持续集成下进行测试,其设置类似于此处描述的设置:"Pretty" Continuous Integration for Python。
我目前使用easy_install
来安装项目,它的依赖项和测试工具(鼻子,覆盖率)。
有时,我的构建报告失败,因为easy_install
由于网络问题而无法下载依赖项:Internet连接,PyPI或其中一个软件包下载服务器已关闭或似乎没有响应
我希望通过使用本地缓存包来防止我的构建在这种情况下失败:当我们无法下载新的依赖项时,我们将使用本地的(在可能的情况下应该更新)。首先尝试下载新的依赖项对我来说很重要,因为我希望尽快通知我的项目由于依赖项中的API更改而中断。
我的问题是:我如何设置这样一个不会破坏网络问题的缓存?我首先尝试使用collective.eggproxy来解决这个问题,但就我所知,它并没有捕获所有错误。
答案 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访问的选项:
备用软件包存储库标记((-i
索引网址和--find_links
)
可以使用PIP_DOWNLOAD_CACHE
指定下载缓存。下载的文件将被缓存以供以后访问
我们已经在所有这三个方面使用了这三个方面。很长一段时间我们只使用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技巧来设置我的应用程序所需的本地缓存:
答案 3 :(得分:0)
我最终使用collective.eggproxy
来缓存下载,但在运行collective.eggproxy
作为守护程序后使用了启动延迟,以防止在easy_install
collective.eggproxy
easy_install
之前发生错误1}}完全启动。
然而,建议使用pip的答案对我来说同样有效,但由于我已经使用collective.eggproxy
和{{1}},因此我更容易坚持使用它们。