在CNTLM的代理后面使用pip


279

我正在尝试在工作中使用代理后面的点子。

这篇文章的答案之一是建议使用CNTLM。我根据另一篇文章进行了安装和配置,但是运行时出现cntlm.exe -c cntlm.ini -I -M http://google.com了错误Connection to proxy failed, bailing out

我也尝试过pip install -–proxy=user:pass@localhost:3128(默认的CNTLM端口),但是提高了Cannot fetch index base URL http://pypi.python.org/simple/。显然,代理出现了问题。

有谁知道如何更明确地检查CNTLM是否设置正确,或者是否还有其他解决方法?我知道你也可以设置http_proxy环境变量,描述在这里,但我不知道要放什么东西凭据,从那些cntlm.ini


2
您需要知道代理的IP地址和端口号,并在cntlm.ini中进行相应的设置(如果有代理,则还要输入代理的用户名和密码)
13年

2
我写了一篇有关如何设置和使用CNTLM 的博客。该帖子适用于Ubuntu和安装Rails,但我认为过程可能相同。编辑:阅读本文,了解如何为Windows设置CNTLM,与我的Ubuntu版本基本相同。HTH。
Annie Lagang

Answers:


74

要为Windows设置CNTLM,请遵循本文。对于Ubuntu,请阅读我的博客文章

编辑:

基本上,要在任何平台上使用CNTLM ,在用作父代理的代理之前,需要设置用户名和哈希密码http://127.0.0.1:3128

  1. 编辑配置并添加重要信息,例如域,用户名,密码和父代理。

  2. 生成哈希密码。

    视窗 cntlm –c cntlm.ini –H

    Ubuntu / Linux cntlm -v -H -c /etc/cntlm.conf

  3. 从配置中删除纯文本密码,并将其替换为生成的密码。

要检查是否正常工作:

视窗 cntlm –M http://www.google.com

Ubuntu / Linux sudo cntlm -M http://www.google.com/

有关更多详细说明,请参见上面的链接。

更新:

出于完整性考虑,我最近能够在Windows中配置和使用CNTLM。在Kindle for PC的同步过程中,由于我们的代理以及为Windows安装和配置CNTLM的问题,我遇到了问题。有关更多详细信息,请参阅我的文章


如果本指南不能解决您的问题,请尝试使用命令行选项运行pip,--trusted-host pypi.python.org这对我有用。
彼得

1
我想补充一点,实际上我无法让cntlm在公司环境中的Windows或Mac上正常工作,但是在Windows机器上安装Fiddler并将其用作代理解决了该问题。
Dean Meehan,

267

与Ubuntu我不能让代理选项,以工作为标榜-所以下面的命令做了工作:

sudo pip --proxy http://web-proxy.mydomain.com install somepackage

但是导出https_proxy环境变量(注意https_proxy不是http_proxy)可以达到目的:

export https_proxy=http://web-proxy.mydomain.com

然后

sudo -E pip install somepackage

1
设置https_proxy也可以在Mac OS X中完成这项工作。
Bharadwaj Srigiriraju

4
同样在这里,--proxy不起作用,我必须同时指定http_proxy和https_proxy(公司防火墙后面的Debian)
marc.guenther 2013年

34
谢谢您-Esudo命令中包含该命令,当我想知道为什么程序看不到我的ENV时,该命令不断抛出我。
AndyC

11
-E添加到sudo帮了我大忙。它保留了我之前设置的环境变量“ http_proxy”。谢谢!
–imaginerThat

7
pip --proxy = someproxy-url:port安装一些软件包,在
Win8.1中

96

在Windows下不要忘记设置

SET HTTPS_PROXY=<proxyHost>:<proxyPort>

我需要设定的

pip install pep8

在fedora上还可以使用“ export http_proxy = <代理主机>:<port>”
Damien

5
这对我有用,但仅形式为SET HTTPS_PROXY = ht tps:// user:pass @ addr:port [减去为防止stackoverflow乱码而必须添加的空间],并且必须替换密码中的特殊字符以%nn形式的十六进制表示
Seth

这对我有用。之前,我正在做:SET HTTPS_PROXY=username:password@<proxyHost>:<proxyPort>但它没有用。
Zahra

有人解释为什么需要环境变量以及pip如何使用它吗?对于conda而言,足以在.condarc文件中配置代理。
玛姬

1
呼叫示例如下:SET HTTPS_PROXY = https://512893:Pass%23h98@proxy.example.com:6050用户名512893和密码pass#h98。切记对密码或用户名中的特殊字符进行url编码(#在这种情况下)。也许也尝试设置HTTP_PROXY标志。
纳曼

65

它对我不起作用。我必须在工作中使用https

pip install --proxy=https://user@mydomain:port somepackage

为了更新,请添加-U。


1
这似乎是Windows上最简单的解决方案,不需要其他软件包。
JE卡特二世

3
如果您需要使用密码:pip install somepackage --proxy https://user:password@mydomain:port
Daniel R Carletti,

而且,如果您不知道user要放什么,那可能是因为没有要放的东西:pip install --proxy=https://mydomain:port somepackage
Olivier

45

通过将公司的根证书添加到site-packages / pip文件夹中的cacert.pem文件中,可以继续通过HTTPS使用pip。然后,将以下几行添加到〜/ pip / pip.conf(如果是Windows,则为〜\ pip \ pip.ini),将pip配置为使用您的代理:

[global]
proxy = [user:passwd@]proxy.server:port

而已。无需使用第三方程序包或放弃HTTPS(当然,您的网络管理员仍然可以看到您在做什么)。


这对我有用,但只有在手动安装了pip之后,这意味着您最初不能使用get-pip.py
Luke Dunstan

2
有关pip.ini的位置,请参见pip.pypa.io/en/latest/user_guide.html#configuration在Windows中,我在“ C:\ Python34 \ Lib \ site-packages \ pip_vendor \ requests \ cacert.pem”中找到了cacert
lib 2015年

2
这对我有用,但是我没有pip.config文件,因此我必须在~/.pip/pip.conf那时创建一个文件,然后export PIP_CONFIG_FILE=/root/.pip/pip.conf我的安装成功了!谢谢!
Rhyuk

2
谢谢,您让我走上了正确的路!仅供参考,对于Windows 7 pip上的Python 3.7,显然位于[Python37]\Lib\site-packages\pip\_vendor\certifi\cacert.pem。以Base64 .cer格式导出公司的SSL拦截证书,将公钥粘贴到该文件中,并在公司代理后面提供完整的https支持。
Mike Strobel,

2
您在Windows上的pip ini位置可能是AppData/Roaming/pip/pip.ini....
Erik Aronesty 18/12/22

27

用于窗户; 在命令提示符下将代理设置为
set HTTP_PROXY=domain\username:password@myproxy:myproxyport

例:
set http_proxy=IND\namit.kewat:xl123456@192.168.180.150:8880


3
如果密码具有特殊字符(如!)怎么办?和@。
拉维·库马尔

1
使用bash逃逸特殊字符逃逸字符:\
亚当

1
您不能使用转义字符()来转义密码中的'@',必须在代理字符串中对其进行url编码为%40。
Deep-B


1
设置这个环境变量似乎有我的机器上PIP没有影响
杰克中号

26

这对我有用(在Windows上通过CMD):

pip install --proxy proxyserver:port requests

21
$ pip --proxy http://proxy-host:proxy-port install packagename

这就是对我有用的


4
仅在临时位于代理之后时,这确实很有用。我还必须将用户名和密码添加到语法中:pip --proxy http://username:password@proxy-host:proxy-port install <package>
Terrabits

14

根据我们的安全政策,我不得将 pypi与https一起使用,SSL检查会重写证书,这会破坏www.python.org的pip内置安全性。中间的人是网络管理员。

所以我需要使用纯http。为此,我需要覆盖系统代理以及默认的pypi:

bin/pip install --proxy=squidproxy:3128 -i http://www.python.org/pypi --upgrade "SQLAlchemy>=0.7.10"

2
这不再起作用了。PyPi现在会自动将您转发到https。
Martin M.

SSL检查似乎无效。可能是因为密钥固定还是向前保密?
bbaassssiiee

@SamuelHarmer。Security有四个音节。对于特朗普来说太多了。
javadba

2
我认为@bbaassssiiee可能是说(2013年)他的点被HTTPS破坏了,因为他的公司代理将所有证书重写为使用自己的根证书(以便他们可以解密所有SSL流量),而点未通过证书验证。当然在2017年,使用--proxy时,pip自动避免证书检查。无论如何,许多公司代理已经有效地将您的所有流量更改为非SSL,因为即使导航到SSL站点,您仍通过非SSL HTTP代理进行代理。
Cowbert

13

打开Windows命令提示符。

设置代理环境变量。

set http_proxy=http://user:password@proxy_ip:port
set https_proxy=https://user:password@proxy_ip:port

在同一Windows命令提示符下使用proxy安装Python软件包。

pip install --proxy="user:password@proxy_ip:port" package_name

12

在Windows 7中:

pip install --proxy DOMAIN\user:password@proxyaddress:port package

即:

pip install --proxy BR\neo:p4ssw0rd@myproxyrocks.com.br:8080 virtualenv

11

手机作为移动热点/ USB绑定

如果我很难通过企业代理找到方法,则可以通过电话(如果有wifi,则为无线热点,如果没有,则为USB系绳)连接到Web,然后快速进行操作pip install

可能不适用于所有设置,但应让大多数人紧迫。



7

我遇到了同样的问题:在具有auth的公司代理工作之后,我无法进行点子工作以及Sublime Text 2(嗯,它可以与我的代理设置的自定义设置一起使用)。对于点子(我将在git上尝试),我通过安装cntlm代理解决了它。配置非常简单:

  1. 编辑cntlm.ini
  2. 编辑“用户名”,“域”,“密码”字段
  3. 添加带有代理设置的“代理”行: server:port
  4. 确保“ NoProxy”行集成了“ localhost”(默认情况下类似)
  5. 注意默认端口:3128
  6. 保存,就是这样。

要测试它是否有效,只需启动一个新的命令行工具,然后尝试:

pip install django --proxy=localhost:3128

那对我有用。希望这会帮助你。





4

对于Windows用户:如果要安装Flask-MongoAlchemy,请使用以下代码

pip install Flask-MongoAlchemy --proxy="http://example.com:port"**

3

如果要在代理后面连接到Internet,则在运行某些命令时可能会出现问题。

在命令提示符下设置用于代理配置的环境变量,如下所示:

set http_proxy=http://username:password@proxyserver:proxyport
set https_proxy=https://username:password@proxyserver:proxyport

2

在CentOS(实际上我认为所有的Linux发行版都是相似的)运行

env|grep http_proxy

env|grep https_proxy

检查这些命令的输出是什么(它们应包含您的代理地址)。

如果输出为空或值不正确,请修改它们,例如:

export http_proxy=http://10.1.1.1:8080
export https_proxy=http://10.1.1.1:8080

现在尝试使用pip获取并安装一些软件包:

pip --proxy http://10.1.1.1:8080 install robotframework

实际上,我从未遇到过这种情况不起作用的情况。对于某些系统,您需要是root用户(sudo是不够的)。


2

警告,“ pip search”命令存在某些问题。搜索命令无论使用哪种方式都不会使用代理设置。

我试图找出问题,仅尝试“搜索”命令,并找到有关该错误的详细解释的帖子:https : //github.com/pypa/pip/issues/1104

我可以使用Python 2.7.9确认Debian 8上的pip 1.5.6仍然存在该错误。“ pip install”命令的作用就像一个超级按钮。


2

我得到了错误:

chris@green:~$ sudo http_proxy=http://localhost:3128 pip install django==1.8.8 
Downloading/unpacking django==1.8.8
  Cannot fetch index base URL http://pypi.python.org/simple/
  Could not find any downloads that satisfy the requirement django==1.8.8
No distributions at all found for django==1.8.8
Storing complete log in /home/chris/.pip/pip.log

(代理服务器的端口是ssh端口转发到的 localhost:3128)。

我必须同时设置http和https代理才能使其工作:

chris@green:~$ sudo http_proxy=http://localhost:3128 https_proxy=http://localhost:3128 pip install django==1.8.8
Downloading/unpacking django==1.8.8
  Downloading Django-1.8.8.tar.gz (7.3Mb): 7.3Mb downloaded
  Running setup.py egg_info for package django

    warning: no previously-included files matching '__pycache__' found under directory '*'
    warning: no previously-included files matching '*.py[co]' found under directory '*'
Installing collected packages: django
  Running setup.py install for django

    warning: no previously-included files matching '__pycache__' found under directory '*'
    warning: no previously-included files matching '*.py[co]' found under directory '*'
    changing mode of build/scripts-2.7/django-admin.py from 644 to 755
    changing mode of /usr/local/bin/django-admin.py to 755
    Installing django-admin script to /usr/local/bin
Successfully installed django
Cleaning up...

http://pypi.python.org/simple/重定向到https://pypi.python.org/simple,但pip的错误不会告诉你。


2

我也不是专家,但是我通过all_proxy在〜/ .bashrc文件中设置变量来使其工作。要从~/.bashrc终端打开文件并进行编辑,请运行以下命令,

gedit ~/.bashrc &

在文件末尾添加以下内容,

export all_proxy="http://x.y.z.w:port"

然后打开一个新终端或在同一终端中运行以下命令,

source ~/.bashrc

仅仅设置http_proxyhttps_proxy变量还不够简单使用pip install somepackage。虽然不知何故sudo -E pip install somepackage可以正常工作,但是如果我在用户文件夹中使用Anaconda的本地安装,这给我带来了一些问题。

PS-我正在使用Ubuntu 16.04。


2

只在本地做呢?很可能您可以通过浏览器从https来源下载

  1. 下载您的模块文件(mysql-connector-python-2.0.3.zip / gz ...等)。
  2. 将其解压缩并转到setup.py所在的解压缩目录,然后调用:

    C:\mysql-connector-python-2.0.3>python.exe setup.py install

6
但是然后您必须自己去获取所有依赖项(以及它们的依赖项,以及...)
jonrsharpe 2015年


1

设置以下环境变量: export PIP_PROXY=http://web-proxy.mydomain.com


1

如果您使用Linux,请以root用户身份使用:

env https_proxy=http://$web_proxy_ip:$web_proxy_port pip install something

使用env时,它将为命令pip install的当前执行导出变量https_proxy。

$ web_proxy_ip是代理的主机名或IP $ web_proxy_port是端口



0

对于Windows,请转到C:/ProgramData/pip/pip.ini,然后进行设置

[全球]

代理= http:// YouKnowTheRest

与您的代理详细信息。这将永久为pip配置代理。


0

一个更简单的方法可能是:

  1. $HOME目录中创建一个名为“ pip”的文件夹。
  2. 在步骤1中创建的目录中创建一个名为“ pip.ini”(Windows)或“ pip.conf”(Linux)的文件
  3. 将以下行复制并粘贴到pip.ini / pip.conf下:

    [global]
    trusted-host = pypi.python.org
                   pypi.org
                   files.pythonhosted.org 
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.