【问题标题】:How to set an HTTP proxy in Python 2.7?如何在 Python 2.7 中设置 HTTP 代理?
【发布时间】:2012-07-28 10:31:41
【问题描述】:

我正在尝试运行一个安装 pip: get-pip.py 的脚本,但由于我的网络位于 HTTP 代理后面,所以我遇到了连接超时。有什么方法可以在我的 Python 2.7 安装中配置 HTTP 代理,以便能够安装我要安装的东西?

注意:我使用的是 Windows。以下是我得到的错误:

C:\SetupFiles>python get-pip.py
Downloading/unpacking pip
  Cannot fetch index base URL http://pypi.python.org/simple/
  Could not find any downloads that satisfy the requirement pip
No distributions at all found for pip

【问题讨论】:

    标签: python


    【解决方案1】:
    cd C:\Python34\Scripts
    
    set HTTP_PROXY= DOMAIN\User_Name:Passw0rd123@PROXY_SERVER_NAME_OR_IP:PORT#
    
    set HTTP_PROXY= DOMAIN\User_Name:Passw0rd123@PROXY_SERVER_NAME_OR_IP:PORT#
    
    pip.exe install PackageName
    

    【讨论】:

      【解决方案2】:

      看起来get-pip.py 已更新为使用环境变量http_proxyhttps_proxy

      窗户:

      set http_proxy=http://proxy.myproxy.com
      set https_proxy=https://proxy.myproxy.com
      python get-pip.py
      

      Linux/OS X:

      export http_proxy=http://proxy.myproxy.com
      export https_proxy=https://proxy.myproxy.com
      sudo -E python get-pip.py
      

      但是,如果这仍然对您不起作用,您始终可以通过代理使用 setuptools' easy_install 通过设置相同的环境变量来安装 pip。

      窗户:

      set http_proxy=http://proxy.myproxy.com
      set https_proxy=https://proxy.myproxy.com
      easy_install pip
      

      Linux/OS X:

      export http_proxy=http://proxy.myproxy.com
      export https_proxy=https://proxy.myproxy.com
      sudo -E easy_install pip
      

      安装完成后,使用:

      pip install --proxy="user:password@server:port" packagename
      

      来自pip man page

      --代理
      让 pip 使用代理服务器访问站点。这可以指定 使用“user:password@proxy.server:port”表示法。如果密码 被遗漏了,pip 会要求它。

      【讨论】:

      • 您的回答似乎假设 pip 已经安装,我还没有成功安装 pip。指令说要运行 get-pip.py 脚本,但我遇到了连接超时,这就是我遇到的麻烦。
      • @Damascusi,您介意告诉我该环境变量是否适用于 get-pip 脚本,以便我可以适当地更新答案吗?
      • @BenBurns 您的解决方案需要安装 easy_install,但是我还需要一个代理来安装它...
      • 我厌倦了安装它,设置了 http_proxy 和 https_proxy,但我收到错误 (407) Proxyauthentifizierung erforderlich,因为我们的代理使用用户名和密码。我尝试使用username:password@proxy 表示法设置http_proxyhttps_proxy,但仍然出现错误。
      • 我成功地在代理后面使用 get-pip.py 进行安装 - 即使使用从跳转服务器进入服务器的 ssh 隧道。 export https_proxy=https://localhost:18080 ; export http_proxy=http://localhost:18080 ; export ftp_proxy=$http_proxy 然后python get-pip.py
      【解决方案3】:

      为了在代理后面使用 get-pip.py 安装 pip,我执行了以下步骤。我的服务器甚至落后于跳转服务器。

      从跳转服务器:

      ssh -R 18080:proxy-server:8080 my-python-server
      

      在“python服务器”上

      export https_proxy=https://localhost:18080 ; export http_proxy=http://localhost:18080 ; export ftp_proxy=$http_proxy
      python get-pip.py
      

      成功。

      【讨论】:

        【解决方案4】:

        您可以尝试从此处下载 pip 的 Windows 二进制文件:http://www.lfd.uci.edu/~gohlke/pythonlibs/#pip

        使用pip下载其他模块见@Ben Burn's answer

        【讨论】:

          【解决方案5】:

          您可以使用easy_install 安装pip(或任何其他软件包),几乎与第一个答案中所述相同。但是,您也需要一个HTTPS 代理。完整的命令序列是:

          set http_proxy=http://proxy.myproxy.com
          set https_proxy=http://proxy.myproxy.com
          easy_install pip
          

          您可能还想为代理添加一个端口,例如http{s}_proxy=http://proxy.myproxy.com:8080

          【讨论】:

            【解决方案6】:

            在我的网络上,仅设置 http_proxy 对我不起作用。以下几点是相关的。

            1 执行 sudo 时不会保留为您的用户设置的 http_proxy - 要保留它,请执行以下操作:

            sudo -E yourcommand
            

            我通过首先安装 cntlm 本地代理使我的安装工作。这里的说明很简洁:http://www.leg.uct.ac.za/howtos/use-isa-proxies

            你可以输入你的域用户名而不是学号

            2 要使用 cntlm 本地代理,请执行:

            pip install --proxy localhost:3128 pygments
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2022-01-01
              • 1970-01-01
              • 2011-10-04
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多