如何让 pip 在代理服务器后面工作 [重复]

Posted

技术标签:

【中文标题】如何让 pip 在代理服务器后面工作 [重复]【英文标题】:How to get pip to work behind a proxy server [duplicate] 【发布时间】:2013-10-05 11:56:43 【问题描述】:

我正在尝试使用 python 包管理器 pip 来安装一个包,它是来自 Internet 的依赖项。但是我在我的大学里有一个代理,并且已经设置了http_proxy 环境变量。但是当我尝试安装这样的包时:

pip install TwitterApi

我在日志文件中收到此错误:

Getting page http://pypi.python.org/simple/TwitterApi
Could not fetch URL http://pypi.python.org/simple/TwitterApi: <urlopen error [Errno 111] Connection refused>
Will skip URL http://pypi.python.org/simple/TwitterApi when looking for download links for TwitterApi
Getting page http://pypi.python.org/simple/
Could not fetch URL http://pypi.python.org/simple/: <urlopen error [Errno 111] Connection refused>

我什至尝试像这样显式设置代理变量:

pip install --proxy http://user:password@proxyserver:port TwitterApi

但我仍然遇到同样的错误。如何让 pip 在代理服务器后面工作。

【问题讨论】:

你能在浏览器中浏览到 pypi.python.org 吗? 是的。我可以毫无问题地浏览互联网。我还在 wgetrc 文件中为 wget 配置了代理,wget 似乎正在工作。甚至git 也在使用一些代理配置。但是pip 不断抛出同样的错误。 查看类似问题的答案。 ***.com/questions/11726881/… 【参考方案1】:

pip的代理参数,根据pip --help,格式为scheme://[user:passwd@]proxy.server:port

您应该使用以下内容:

pip install --proxy http://user:password@proxyserver:port TwitterApi

另外,HTTP_PROXY 环境变量应该受到尊重。

请注意,在早期版本中(无法追踪代码中的更改,抱歉,但文档已更新 here),您必须保留 scheme:// 部分才能正常工作,即pip install --proxy user:password@proxyserver:port

【讨论】:

区别在哪里? 其实你要指定(需要协议):pip install --proxy http://user:password@proxyserver:port &lt;package&gt; 就我而言,我必须指定域,如下所示: pip install --proxy DOMAIN\user:password@proxyserver:port 我想您正在连接到通过某种 Windows ActiveDirectory 服务进行身份验证的代理。因此,域在某种程度上是用户名的一部分。小心,你可能需要转义` to avoid terminal char escaping (e.g. \n`之类的) 显然我的意思是转义`\`,但我现在不能编辑;-)【参考方案2】:

至少对于 pip 1.3.1,它支持 http_proxy 和 https_proxy 环境变量。确保两者都定义,因为它将使用 https 访问 PYPI 索引。

export https_proxy="http://<proxy.server>:<port>"
pip install TwitterApi

【讨论】:

这在 CentOS 上不起作用 在终端上下文中设置 https_proxy 变量后,此选项适用于 Windows 7 中的 git-bash 命令行。【参考方案3】:

我知道旧线程,但为了将来参考,--proxy 选项现在通过“=”

例子:

$ sudo pip install --proxy=http://yourproxy:yourport package_name

【讨论】:

【参考方案4】:

首先尝试使用以下命令设置代理

SET HTTPS_PROXY=http://proxy.***.com:PORT#

然后尝试使用命令

pip install ModuleName

【讨论】:

当其他解决方案都没有时,这对我有用。使用 Windows 7 专业版 @Plamen,那是因为大多数 pip 存储库都以 https:// 开头所有其他答案都建议使用 http_proxy,但在这种情况下,您已经设置了 https_proxy【参考方案5】:

在 Ubuntu 上,您可以使用设置代理

export http_proxy=http://username:password@proxy:port
export https_proxy=http://username:password@proxy:port

或者如果您遇到 SOCKS 错误使用

export all_proxy=http://username:password@proxy:port

然后运行 ​​pip

sudo -E pip3 install packageName

【讨论】:

您好,用户名和密码是您的企业号吗? @abdoulsn 是你用来登录代理的用户名和密码 是的,谢谢,我成功了。【参考方案6】:

至少 pip3 在没有“=”的情况下也可以工作,但是,您可能需要“https”而不是“http”

对我有用的最终命令:

sudo pip3 install --proxy https://proxy:port BINARY

【讨论】:

以上是关于如何让 pip 在代理服务器后面工作 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Anaconda 在 HTTP 代理(不是 https)后面工作?

有没有办法让 npm install (命令)在代理后面工作?

无法使用pip安装openpyxl - 如何克服代理

如何为每个配置文件配置 PIP 以使用代理(带身份验证)?

在代理后面访问

如何从代理后面使用 sbt?