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

时间:2012-03-14 08:54:46

标签: python authentication proxy pip

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

有没有人知道我可以尝试的其他技巧,或pip有关于Windows代理的限制吗?

更新:我失败的尝试涉及搜索pypi。我刚尝试安装一些东西,但它确实有效。但搜索仍然失败。这是否表示pip中的错误或它们的工作方式不同?

11 个答案:

答案 0 :(得分:87)

我尝试了两个选项,这些选项都适用于我公司的NTLM身份验证代理。 选项1是使用--proxy http://user:pass@proxyAddress:proxyPort

如果您仍然遇到问题,我建议安装代理身份验证服务(我使用CNTLM)并指向pip,例如--proxy http://localhost:3128

答案 1 :(得分:42)

花了我几个小时来弄明白这一点,但我终于让它使用CNTLM工作,然后让它只使用一个pip配置文件。以下是我如何使用pip配置文件...

<强>解决方案:

1。在Windows中导航到您的用户个人资料目录(例如C:\ Users \ Sync)并创建一个名为&#34; pip &#34的文件夹;

2. :创建名为&#34; pip.ini &#34;的文件在此目录中(例如C:\ Users \ Sync \ pip \ pip.ini)并在其中输入以下内容:

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

替换 [域名] [用户名] [密码] [代理地址] [代理端口] ,包含您自己的信息。

3。此时我能够运行&#34; pip install &#34;没有任何问题。

希望这也适用于其他人!

P.S。:由于您的密码以纯文本格式存储,因此可能会引起安全问题。如果这是一个问题,请考虑使用this article设置CNTLM(允许使用散列密码而不是纯文本)。然后在&#34; pip.ini&#34;中设置proxy = 127.0.0.1:3128。上面提到的文件。

答案 2 :(得分:35)

这是我设置它的方式:

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

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

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

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

    pip install PackageName

  4. 例如:

    Example

答案 3 :(得分:15)

我在Windows 7上遇到了同样的问题。我设法通过创建一个&#34; pip&#34;带有&#34; pip.ini&#34;的文件夹里面的文件。我将此文件夹放在&#34; C:\ Users \ {my.username} \ AppData \ Roaming&#34;中,因为根据Python文档:

  

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

在pip.ini文件中我只有:

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

所以没有用户名:密码。它运作得很好。

答案 4 :(得分:1)

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

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

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

您也可以将--cert参数用于PIP,结果相同。

答案 5 :(得分:1)

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

使用cygwin之类的仿真器控制台工具,然后以默认的Linux方式进行操作:

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

一切正常。

答案 6 :(得分:0)

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

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

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

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

答案 7 :(得分:0)

安装cntlm:Cntlm: Fast NTLM Authentication Proxy in C

配置cntlm.ini:

  

用户名ob66759

     

域名NAM

     

密码密码

     

Proxy proxy1.net:8080

     

代理proxy2.net:8080

     

NoProxy localhost,127.0.0。*,10. *,192.168。*

     

听3128

     

允许127.0.0.1

     

#your IP

     

允许10.106.18.138

开始吧:

  

cntlm -v -c cntlm.ini

现在在cmd.exe中:

  

pip install --upgrade pip --proxy 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/

答案 8 :(得分:0)

就我而言,当我仅以管理员身份打开命令提示符(cmd)时就可以使用,并且不需要有关代理设置的更多信息。

答案 9 :(得分:0)

尝试对域和用户之间的反斜杠进行编码

pip --proxy https://domain%5Cuser:password@proxy:port install -r requirements.txt

答案 10 :(得分:0)

对我来说,问题出在conda环境中。它很可能使用了conda环境中的pip命令(“ where pip”指向conda环境)。通过--proxy设置代理设置或设置http_proxy都没有帮助。

相反,只需打开一个新的CMD并在那里进行“ pip安装”就可以了。