关于python:如何让pip在代理服务器后面工作

How to get pip to work behind a proxy server

本问题已经有最佳答案,请猛点这里访问。

我正在尝试使用python软件包管理器pip安装软件包,并且它是来自互联网的依赖项。 但是,我在大学里的代理服务器后面,并且已经设置了http_proxy环境变量。 但是,当我尝试安装这样的软件包时:

1
pip install TwitterApi

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

1
2
3
4
5
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>

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

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

但是我仍然遇到同样的错误。 我如何获得在代理服务器后面工作的点子。


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

您应该使用以下内容:

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

另外,应注意HTTP_PROXY env var。

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


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

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


我知道是旧线程,但为了将来参考,现在将--proxy选项传递为" ="

例:

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

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

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

然后尝试使用命令

1
pip install ModuleName


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

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

或者如果您使用SOCKS错误

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

然后跑点子

1
sudo -E pip3 install {packageName}


至少pip3也可以在不使用" ="的情况下使用,但是,可能需要" https"而不是" http"

最终命令,对我有用:

1
sudo pip3 install --proxy https://{proxy}:{port} {BINARY}