如何在身份验证代理后面的Windows上使用pip


90

我的计算机在Windows服务器上的代理后面运行Windows(使用活动目录),但我不知道如何使用它pip(在python3中)。我尝试使用--proxy,但仍然只是超时。我也尝试过设置较长的超时时间(60s),但这没什么区别。我的代理设置是正确的,然后将它们与我在TortoiseHG中成功使用的设置进行了比较以确保。

有没有其他人知道我可以尝试的技巧,或者在pipWindows代理方面有一些限制吗?

更新:我的失败尝试涉及搜索pypi。我刚刚尝试过实际安装某些东西,但它确实起作用。搜索仍然失败。这是否表明存在错误pip或它们的工作方式不同?

Answers:


107

我尝试了2个选项,它们都可以在我公司的NTLM身份验证代理上使用。选项1是使用--proxy http://user:pass@proxyAddress:proxyPort

如果您仍然遇到问题,我建议您安装代理身份验证服务(我使用CNTLM),然后在其上指定点子,例如--proxy http://localhost:3128


1
CNTLM工具正在积极维护中,并且似乎运行得很好。
米哈尔菲塔

6
无论我做了什么尝试,我都无法使它起作用
eusoubrasileiro

2
如果您的密码或用户名中包含特殊字符,只需在特殊字符前用\对其进行转义即可。它工作正常。
Arockia'1

我是否正确理解您正在告诉pip将请求发送到代理,并通过http连接使用给定的用户名和密码对自身进行身份验证?这意味着您的密码将以未加密的方式发送到代理服务器,对!!看起来对我来说是一个很大的安全风险,或者我错过了什么?
罗伯特

它的工作对我来说与微软的Forefront防火墙
劳尔·萨利纳斯,蒙特阿古

64

我花了几个小时才弄清楚这一点,但是最终我使它可以使用CNTLM进行工作,之后又使它仅与一个pip配置文件一起工作。这是我如何使用pip配置文件...

解:

1.在Windows中,导航到用户配置文件目录(例如C:\ Users \ Sync),然后创建一个名为“ pip ” 的文件夹

2.在此目录(例如C:\ Users \ Sync \ pip \ pip.ini)中创建一个名为“ pip.ini ” 的文件,然后在其中输入以下内容:

    [global]
    trusted-host = pypi.python.org
                   pypi.org
                   files.pythonhosted.org
    proxy = http://[domain name]%5C[username]:[password]@[proxy address]:[proxy port]

用您自己的信息替换[domain name][username][password][proxy address][proxy port]

请注意,如果您的 [域名][用户名][密码]具有特殊字符,则必须 | | 进行编码编码它们。

3.至此,我可以运行“ pip install ”而没有任何问题。

希望这也适用于其他人!

PS:由于您的密码以纯文本格式存储,因此可能引起安全问题。如果这是一个问题,请考虑使用本文设置CNTLM (允许使用哈希密码而不是纯文本)。然后proxy = 127.0.0.1:3128在上面提到的“ pip.ini”文件中进行设置。


2
有关pip.ini位置的更多信息,请参见此处。您可以设置PIP_CONFIG_FILE环境变量以指向pip.ini文件
Mahesha999,2013年

1
爱它!!!!非常干净-请记住,大多数代理将允许您手动输入密码。切勿以明文形式保留密码!
avgvstvs

1
可以在此处添加另一个非常重要的全局设置是镜像站点,例如,添加“ index-url = pypi.tuna.tsinghua.edu.cn/simple ”将大大提高中国大陆的点下载速度。Linux下的对应文件是〜/ .pip / pip.conf
李廷谦(RingQianLI)

4
什么是[域名]?
亚历克斯·B

1
@AlexB,[域名]指的是您的Windows域名
Mike Pennington

45

这是我的设置方式:

  1. 以管理员身份打开命令提示符(CMD)。
  2. 导出代理设置:

    set http_proxy=http://username:password@proxyAddress:port

    set https_proxy=https://username:password@proxyAddress:port

  3. 安装要安装的软件包:

    pip install PackageName

例如:

例


4
这绝对是第一件事。Python是跨平台的,这等效于我们通常在Linux上所做的工作。在Windows上(在同一代理后面)出现了问题,该--proxy参数根本没有该参数,但是标准的env var方法第一次起作用。作为记录,我们还设置no_proxy为避免其他内部请求尝试通过代理发出请求。
randomsock

在win10上对我不起作用。使用模拟器控制台工具,如cygwincmder:然后再去做Linux的方式export http_proxy=<proxy>export https_proxy=<proxy>,然后就去做pip install <package>
巴基

这对我有用,但是--proxy命令行标志从未起作用。Windows 10
AmbroseChapel

15

我在Windows 7上遇到了同样的问题。我设法通过在其中创建带有“ pip.ini”文件的“ pip”文件夹来使其正常工作。我将此文件夹放在“ C:\ Users \ {my.username} \ AppData \ Roaming”中,因为根据Python文档:

在Windows上,配置文件为%APPDATA%\ pip \ pip.ini

在pip.ini文件中,我只有:

[global]
proxy = [proxy address]:[proxy port]

因此,没有用户名:password。而且工作正常。


1
就我而言,这只有在我将用户名和密码以明文形式存储在此文件中时才有效...:/为什么CMD的其他功能都像“ ping XYZ”一样工作。为什么不使用IE设置点子?
hmrc87 '17

7

我遇到了类似的问题,发现我的公司使用NTLM代理身份验证。如果您在pip.log中看到此错误,则可能是以下问题:

无法获取URL http://pypi.python.org/simple/pyreadline:HTTP错误407:需要代理身份验证(ISA服务器需要授权才能满足该请求。拒绝访问Web代理筛选器。)

通过成为中间代理,NTLMaps可用于与NTLM代理服务器接口。

下载NTLMAP,更新随附的server.cfg,运行main.py文件,然后将pip的代理设置指向127.0.0.1 :。

我还需要将server.cfg文件中的这些默认值更改为:

LM_PART:1
NT_PART:1

# Highly experimental option. See research.txt for details.
# LM - 06820000
# NT - 05820000
# LM + NT - 
NTLM_FLAGS: 07820000

http://ntlmaps.sourceforge.net/


1

您也可能会遇到来自代理的证书的问题。这里有很多关于如何检索代理证书的答案。

在Windows主机上,要允许pip清除代理,您可能需要设置一个环境变量,例如:

PIP_CERT=C:\path\to\certificate\file\in\pem\form\myproxycert.pem

您还可以使用--cert参数to PIP获得相同的结果。


1

在远程Windows环境中,我遇到了同样的问题。我尝试了许多在这里或其他类似帖子中找到的解决方案,但没有任何效果。最后,解决方案非常简单。我必须设置NO_PROXYcmd:

set NO_PROXY="<domain>\<username>:<password>@<host>:<port>"
pip install <packagename>

您必须使用双引号并将其设置NO_PROXY为大写。您也可以添加NO_PROXY为环境变量,而不是每次使用控制台时都进行设置。

如果在此发布任何其他解决方案,我希望这会有所帮助。


1

在C中安装cntlm: Cntlm:快速NTLM身份验证代理

配置cntlm.ini:

用户名ob66759

域NAM

密码机密

代理proxy1.net:8080

代理proxy2.net:8080

NoProxy本地主机,127.0.0。*,10。*,192.168。*

听3128

允许127.0.0.1

#您的IP

允许10.106.18.138

启动它:

cntlm -v -c cntlm.ini

现在在cmd.exe中:

点安装-升级点-代理127.0.0.1:3128

Collecting pip
  Downloading https://files.pythonhosted.
44c8a6e917c1820365cbebcb6a8974d1cd045ab4/

    100% |███████████████████████████████
Installing collected packages: pip
  Found existing installation: pip 9.0.1
    Uninstalling pip-9.0.1:
      Successfully uninstalled pip-9.0.1

Successfully installed pip-10.0.1

作品!

您还可以隐藏密码:https : //stormpoopersmith.com/2012/03/20/using-applications-behind-a-corporate-proxy/


1

Windows10及更高版本上的相同问题对我不起作用。

使用类似的模拟器控制台工具cygwin,然后以默认的linux方式进行操作:

export http_proxy=<proxy>
export https_proxy=<proxy>
pip install <package>

而且一切正常。


在Windows 10下,通过身份验证代理,这对我有用:使用cntlm作为中间代理,然后在msdos提示符下:“ set https_proxy = localhost:3128”,然后“ pip install -U setuptools == 41.0.1”
mrtexaz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.