Python包代理/缓存

时间:2014-07-15 06:25:40

标签: python caching pypi

我正在尝试为网络上的每台计算机找到一种缓存或存储某些python包的方法。我已经看过以下解决方案:

  • pypicache但不再积极开发,作者建议使用devpi,请参阅此处:https://bitbucket.org/micktwomey/pypicache/
  • proxypypi但此处作者也建议使用devpi,请参阅:https://bitbucket.org/r1chardj0n3s/proxypypi
  • devpi - 为此,我跟随其中一个quickstart guides,但这只允许localhost访问,因此我尝试关注permanent quickstart guide。虽然我不确定这里的部分,即:
    • virtualenv的使用。这背后的原因没有解释,为什么不能正常安装? (如果你不是python包装器,为什么要使用virtualenv?)
    • 已弃用的安装说明部分(使用--gendeploy)。没有其他选择,我只是忽略它吗?这似乎很重要。
    • 为什么需要主管?
  • 所以我决定看看pypiserver,它非常容易设置,我可以告诉pip将它与-i选项一起使用,但它似乎不会缓存任何包。如果我停止了pypiserver,那么pip install会失败,因为它无法连接到它,所以这意味着它必须使用它。除了它没有存储任何包。我最好的猜测是,它只是代理请求而不是缓存下载。

有没有一种标准的方法可以做到这一点?我的目标是防止丢失互联网连接或删除软件包,以便网络中的客户端仍可以设置开发或生产机器(如果发生任何一种情况),也可以加快设置开发或生产机器。

我觉得devpipypiserver都是不错的选择,我似乎错过了让它们发挥作用的东西。

编辑:看来我对pypiserver的正确性只是代理对PyPI的请求。它是用于上传您自己的软件包,因此您可以从pypiserver下载它们,但如果您正在寻找官方软件包,则可以从PyPI获取它。

1 个答案:

答案 0 :(得分:1)

几天前发布了新版本的Devpi。 The latest documentation已解决了我的所有问题,我决定使用devpi-server 2.0.1。 Devpi不仅为PyPI包提供缓存代理,还允许您使用devpi-client上传自定义包。由于我不需要此功能,因此我只使用显示hereroot/pypi索引。虽然我按照this page上的说明减去关于devpi-client的最后一部分。