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

aqu*_*tae 78 python authentication proxy pip

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

是否还有其他任何人都知道我可以尝试的技巧,或者pip对于Windows代理有什么限制吗?

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

Rus*_*ell 95

我已经尝试了两个选项,这两个选项都适用于我公司的NTLM认证代理.选项1是使用--proxy http://user:pass@proxyAddress:proxyPort

如果你仍然遇到麻烦,我会建议安装一个代理身份验证服务(我使用CNTLM)并指向它,即类似于--proxy http://localhost:3128

  • 无论我做了什么试验,我都无法工作 (5认同)
  • CNTLM 工具得到了积极维护,并且似乎工作得非常好。 (2认同)
  • 如果您的密码或用户名中包含特殊字符,请在特殊字符前使用\来转义它.它工作正常. (2认同)
  • 我是否正确理解这一点,您告诉 pip 将请求发送到代理,通过 http 连接使用给定的用户和密码进行自身身份验证?这意味着您的密码将以未加密的方式发送到代理服务器,对吧!?对我来说似乎存在很大的安全风险,还是我错过了什么? (2认同)

小智 51

我花了几个小时来计算出来,但我终于让它使用CNTLM工作,然后让它只使用一个pip配置文件.这是我如何使用pip配置文件...

解:

1.在Windows中导航到您的用户配置文件目录(例如C:\ Users\Sync)并创建名为" pip " 的文件夹

2.在此目录中创建名为" pip.ini "的文件(例如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]
Run Code Online (Sandbox Code Playgroud)

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

3.此时我能够毫无问题地运行" pip install ".

希望这也适用于其他人!

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

  • 什么是[域名]? (3认同)
  • 有关pip.ini位置的更多信息,请参见[此处](https://pip.pypa.io/en/latest/user_guide/#config-file).您可以将`PIP_CONFIG_FILE`环境变量设置为指向pip.ini文件 (2认同)
  • 爱它!!!!如此干净——只需记住大多数代理会让您手动输入密码。切勿以明文形式留下您的密码! (2认同)
  • 另一个非常重要的全局设置可以在这里添加是镜像站点,例如添加“index-url = https://pypi.tuna.tsinghua.edu.cn/simple”将大大提高中国pip的下载速度。而Linux下对应的文件是~/.pip/pip.conf (2认同)
  • @AlexB,[域名] 指您的 _windows_ 域名 (2认同)

Hei*_*ete 41

我就是这样设置的:

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

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

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

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

    pip install PackageName

例如:

例

  • 这绝对是第一个尝试的事情.Python是跨平台的,这相当于我们通常在Linux上做的事情.在Windows上(在同一代理后面)有问题,其中`--proxy`参数根本就没有它,但标准的env var方法第一次工作.为了记录,我们还设置了'no_proxy`以避免其他内部请求试图通过代理. (2认同)

sta*_*nn1 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]
Run Code Online (Sandbox Code Playgroud)

所以没有用户名:密码.它工作得很好.


mon*_*kut 7

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

无法获取URL http://pypi.python.org/simple/pyreadline:HTTP错误407:需要代理身份验证(ISA Server需要授权才能完成请求.拒绝访问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
Run Code Online (Sandbox Code Playgroud)

http://ntlmaps.sourceforge.net/