94

我正在尝试使用 python 包管理器 pip 来安装一个包,它是来自互联网的依赖项。但是我在我的大学里有一个代理,并且已经设置了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 在代理服务器后面工作。

4

6 回答 6

127

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

您应该使用以下内容:

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

此外,HTTP_PROXY应该尊重 env var。

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

于 2013-12-28T19:18:12.743 回答
33

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

export https_proxy="http://<proxy.server>:<port>"
pip install TwitterApi
于 2014-04-16T07:56:07.433 回答
19

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

例子:

$ sudo pip install --proxy=http://yourproxy:yourport package_name
于 2016-01-13T13:10:25.927 回答
15

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

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

然后尝试使用命令

pip install ModuleName
于 2017-03-09T09:33:40.640 回答
10

在 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

然后运行点子

sudo -E pip3 install {packageName}
于 2018-03-14T05:46:46.030 回答
5

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

最终命令,对我有用:

sudo pip3 install --proxy https://{proxy}:{port} {BINARY}
于 2016-06-23T09:26:20.927 回答