【问题标题】:How do I use easy_install and buildout when pypi is down?当 pypi 关闭时,如何使用 easy_install 和 buildout?
【发布时间】:2023-04-10 23:32:01
【问题描述】:

我正在使用buildout 自动下载和设置我的 Plone 安装的许多依赖项。 buildout 或多或少使用 easy_install 来下载和安装一堆 Python 鸡蛋。这通常有效,但如果无法下载任何依赖项或者我希望构建找到不适合 pypi 的内部包,则它不起作用。如何设置我自己的本地版本的 pypi 来自动镜像我需要的包?对于使用 pypi 作为元数据而不是代码的软件包,它是否仍会依赖第三方服务器?

【问题讨论】:

  • 以下大多数答案并不相互排斥:至少使用一个,但考虑更多:在您的构建中本地下载缓存,仅包含您需要的包的私有索引(来自您的下载缓存) ,以及下面 MrTopf 的回答可能是一个 PyPI 镜像。当我希望离线工作超过几个小时时,我通常会至少执行这三个中的两个。

标签: python plone easy-install buildout


【解决方案1】:

这里是instructions on how to setup your own PyPi mirror。这个项目的主页是here。那里似乎也有越来越多的镜子。

有关如何设置自己的包索引的说明,请查看this blog post,其中最后解释了一种解决方案。然后你也可以在那里托管你自己的内部包。优点还在于版本是这样固定的。 (有关在构建中直接固定版本的方法,请查看this post)。

如果 PyPI 上只有元数据并且存档存储在其他地方,您当然也可以将其复制到您的索引中。如果您只使用 PyPI 镜像,我假设您仍然需要访问这些服务器。

【讨论】:

    【解决方案2】:

    您也可以使用镜子。把它放在“~/.pip/pip.conf”的“[global]”部分:

    index-url = http://d.pypi.python.org/simple/
    

    这是here 宣布的最新功能。

    【讨论】:

      【解决方案3】:

      此页面展示了如何使用@moraes 帖子中提到的备用镜像,但对于 easy_install、buildout 和 virtualenv 以及 pip:

      http://jacobian.org/writing/when-pypi-goes-down/

      【讨论】:

        【解决方案4】:

        在 zc.buildout 的情况下:使用其本地下载缓存功能。缓存主要有三样东西:

        对于所有这三个,我们需要调整全局配置并为扩展设置一个缓存文件夹,并为鸡蛋和其他下载设置一个缓存文件夹。

        在您的主文件夹中创建一个.buildout 文件夹。

        在此文件夹中创建文件夹 extends-cachedownloads

        .buildout 中创建一个文件 default.cfg:

        [buildout]  
        extends-cache = /home/USERNAME/.buildout/extends-cache 
        download-cache = /home/USERNAME/.buildout/downloads
        

        所以你有:

        .buildout/
        ├── default.cfg
        ├── downloads
        └── extends-cache
        

        就是这样。确保不要在您的特定构建中覆盖 default.cfg 中的这两个变量。第一次成功运行构建后,后续运行以离线模式运行./bin/buildout -o

        如果在离线模式下使用,即在没有新下载但某些配置发生更改时,构建速度会更快

        除此之外,运行自己的 pypi-mirror 是有意义的。作为另一个信息来源,您可能会对我前段时间写的关于这个主题的文章感兴趣:http://bluedynamics.com/articles/jens/setup-z3c.pypimirror

        【讨论】:

        • 这让我开始了,但 -o 选项似乎已损坏(请参阅github.com/buildout/buildout/issues/41)。我在指定download-cache 时使用了配置选项install-from-cache = true,并按预期工作。
        【解决方案5】:

        buildout.cfg中配置index,例如

        [buildout]
        index = http://a.pypi.python.org/
        find-links = 
        

        更多镜像:http://www.pypi-mirrors.org/

        【讨论】:

          【解决方案6】:

          PyPI 从 2010 年年中开始进行镜像 http://pypi.python.org/mirrors

          【讨论】:

            【解决方案7】:

            对于通常需要通过requirements.txt(或可能单独)安装在virtualenv 中的软件包,您必须覆盖通常位于~/.pip/pip.confpip.conf 文件

            在您的pip.conf 文件中:

            [global]
            index-url=https://pypi.python.org/simple/
            
            [install]
            trusted-host=pypi.python.org
            

            如果需要,您可以在此处提供您自己的自定义 pypi 版本的 url。

            如果您希望在创建 virtualenveasy_install 时还使用另一个 pypi 服务器,您需要覆盖通常位于 ~/pydistutils.cfgpydistutils.cfg 文件

            pydistutils.cfg 文件中:

            [easy_install]
            index-url=https://pypi.python.org/simple/
            

            这将确保使用pydistutils.cfg 中提到的 pypi 的 URL 创建您的 venv。在这里,我们告诉easy_install 使用https://pypi.python.org/simple/ 来创建venvs

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-02-07
              • 1970-01-01
              • 2010-11-03
              • 2012-12-21
              • 2013-11-26
              • 2011-06-04
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多