关于python:在CNTLM代理后面使用pip

Using pip behind a proxy with CNTLM

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

这篇文章的答案之一是建议使用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中的凭据?


使用Ubuntu时,我无法使Proxy选项如所宣传的那样工作-因此以下命令不起作用:

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

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

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

然后

1
sudo -E pip install somepackage


在Windows下不要忘记设置

1
SET HTTPS_PROXY=<proxyHost>:<proxyPort>

我需要设定的

1
pip install pep8


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

编辑:

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

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

  • 生成哈希密码。

    Windows cntlm –c cntlm.ini –H

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

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

  • 要检查是否正常工作:

    Windows cntlm –M http://www.google.com

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

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

    更新:

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


    我没有为我工作。我使用https进行工作:

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

    为了更新,请添加-U。


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

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

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


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

    例如:set http_proxy=IND
    amit.kewat:[email protected]:8880


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

    1
    pip install --proxy proxyserver:port requests

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

    这就是对我有用的


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

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

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


    在Windows 7中:

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

    即:

    1
    2
    pip install --proxy BR
    eo:p4ssw0rd@myproxyrocks.com.br:8080 virtualenv

    打开Windows命令提示符。

    设置代理环境变量。

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

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

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

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

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

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


    在Ubuntu 14.04 LTS中

    1
       sudo pip --proxy http://PROXYDOM:PROXYPORT install package

    干杯


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

  • 编辑cntlm.ini
  • 编辑"用户名","域","密码"字段
  • 添加带有代理设置的"代理"行:server:port
  • 确保" NoProxy"行集成了" localhost"(默认情况下类似)
  • 注意默认端口:3128
  • 保存,就是这样。
  • 要测试它是否有效,只需启动一个新的命令行工具,然后尝试:

    1
    pip install django --proxy=localhost:3128

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


    我可以通过运行以下命令来实现:

    1
    pip install --proxy=http://user:pass@your.proxy.com:3128 package==version

    我在公司代理中使用Python 3.7.3。


    如果要通过代理升级点子,可以使用(例如,在Windows中):

    1
    2
    python -m pip --proxy http://proxy_user:proxy_password@proxy_hostname:proxy_port insta
    ll --upgrade pip

    在高级系统设置中设置环境变量。
    在命令提示符下,其行为应如下所示:

    C:\Windows\system32>echo %http_proxy%

    http://username:passowrd@proxy:port

    C:\Windows\system32>echo %https_proxy%

    http://username:password@proxy:port

    后来,简单地
    pip install whatEver应该可以工作。


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

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

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

  • 下载您的模块文件(mysql-connector-python-2.0.3.zip / gz ...
    等等)。
  • 将其解压缩并转到setup.py所在的解压缩目录
    并致电:

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

  • 我得到了错误:

    1
    2
    3
    4
    5
    6
    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代理才能使其正常工作:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    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的错误不会告诉您。


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

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

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


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

    1
    gedit ~/.bashrc &

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

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

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

    1
    source ~/.bashrc

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

    附言-我正在使用Ubuntu 16.04。


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

    1
    env|grep http_proxy

    1
    env|grep https_proxy

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

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

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

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

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

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


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


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

    1
    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是端口


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

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

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

    我使用" Fiddler"(https://www.telerik.com/download/fiddler)解决了Windows中PIP的问题。下载并安装后,请执行以下操作:

    "规则" =>单击"自动验证"

    示例:pip install virtualenv -proxy 127.0.0.1:8888

    只需打开提示并使用。

    https://github.com/pypa/pip/issues/1182搜索" voltagex"(评论于2015年5月22日)


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

    [全球]

    代理= http:// YouKnowTheRest

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


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

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

    1
    2
    3
    4
    [global]
    trusted-host = pypi.python.org
                   pypi.org
                   files.pythonhosted.org

  • 这对我有效:

    1
    pip --proxy proxy url:port command package