【问题标题】:what url should I authorize to use pip behind a firewall?我应该授权什么 url 在防火墙后面使用 pip?
【发布时间】:2012-12-25 23:19:17
【问题描述】:

我有一个服务器,我想在其上使用 Python,它位于公司防火墙后面。我不想弄乱它,我唯一能做的就是为特定的 URL/域设置防火墙例外。

我还想使用 pip 或 easy_install 访问位于 PYPI 上的软件包。因此,您知道我应该要求在防火墙的例外规则中列出哪个 URL,除了 *.pypi.python.org 吗?

【问题讨论】:

  • except *.pypi.python.org 是什么意思?那是 PyPI URL。
  • @katrielalex:PyPI 是 元数据 索引,虽然大多数包也已上传到 PyPI,但这是可选。大量其他包是从它们自己的域中提供的。 pip 将查找下载位置并联系正确的位置以获取它。这可以通过互联网上的任何地方
  • @MartijnPieters 是的,我同意。我将 OP 的声明 located on PYPI 读为 hosted on PyPI,因为显然无法添加防火墙规则“允许 PyPI 链接的任何内容”。
  • 好吧,我的错。我不知道上传到 PyPI 是可选的 only,尽管我注意到 pip 在其他服务器上反弹以供下载...感谢您的澄清。

标签: python pip firewall


【解决方案1】:

您需要打开防火墙以访问您需要安装的任何软件包的下载位置,或连接到已获得访问权限的代理服务器。

请注意,下载位置不一定在 PyPI 上。 Python 包索引是一种元数据服务,它恰好也为索引包提供存储。因此,并非所有在 PyPI 上编入索引的软件包实际上都是从 PyPI下载,下载位置可能在 Internet 上的任何位置。

我会说你从打开 pypi.python.org 开始,然后当个别包安装失败时,检查他们的 PyPI 页面并添加列出的下载位置。

【讨论】:

  • 感谢您的回答。你认为一个好的选择是做export PIP_DOWNLOAD_CACHE=$HOME/.pip_download_cache,在可以访问互联网的机器上创建一个虚拟环境,做pip install -r requirements.txt,然后将此下载缓存复制到可以访问pypi的隔离机器(这样如果较新的 requirements.txt 授权较新的软件包版本,我可以检查是否没有较新的版本?
  • @Marc-OlivierTiteux:可以,是的。另一种选择是设置PyPI mirror(充当请求包的缓存代理)。
  • 我最终使用了这样的东西:stackoverflow.com/a/12147405/493211(在可以访问网络的服务器上创建),然后只有当我是独立机器时才使用第二行。谢谢!
  • 我也有同样的限制。有没有办法检查包裹的位置?
  • @paolof89:添加 -v 开关(可以多次添加)以增加 pip 的详细程度:pip install -v ... 并看看它告诉你什么。它会报告它尝试连接的所有 URL。
【解决方案2】:

我已经解决了将这些域添加到防火墙白名单的问题:

  • pypi.python.org
  • pypi.org
  • pythonhosted.org

【讨论】:

    猜你喜欢
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    相关资源
    最近更新 更多