【问题标题】:How to use pip with socks proxy?如何将 pip 与 socks 代理一起使用?
【发布时间】:2014-05-19 21:21:43
【问题描述】:

我正在使用ssh -D 创建套接字代理,想知道如何使用pip(或easy_install)?我找到了this question,但那是一个 http 代理。

另外,请给我一个适用于 OS X 的解决方案。(我试过 proxifier,它适用于 pip install,但不适用于 sudo pip install

【问题讨论】:

    标签: macos proxy pip


    【解决方案1】:

    最简单的方法,也适用于许多操作系统:

    pip install pysocks
    pip install <yourpacakge> --proxy socks5:127.0.0.1:8123
    

    根据需要替换 socks4 和您自己的 ip/port。

    【讨论】:

    • "AssertionError: 不支持代理方案 socks5"
    • 不幸的是,如果您需要代理来连接pip,这将不起作用
    • @mark pip 有一个引导 shell 脚本,您可以将其与更传统的代理参数一起使用。即:curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py.
    • @VladimirPanteleev 你试过 socks4 吗?可能你需要更新版本的 python 才能工作(我通常使用 3.6)
    • 我的解决方案是通过 yum 在 /etc/yum.conf 中使用适当的 SOCKS 代理设置安装 python3-pysocks,然后运行第二个命令。
    【解决方案2】:

    使用 socks proxifier,例如 proxychains

    命令 pip 将类似于 proxychains pip install package_name

    或使用another proxifier

    【讨论】:

    【解决方案3】:

    对于 CentOS,你可以使用 privoxy 将 socks5 代理转换为 http 代理。

    yum install privoxy
    

    然后编辑/etc/privoxy/config,在文件末尾添加:

    forward-socks5 / 127.0.0.1:1080 .
    

    它将 socks5 代理从 1080 转换为 http 代理 8118。然后你可以在你的 pip 配置文件中指定代理:

    [global]
    proxy = 127.0.0.1:8118
    

    请勿使用polipo,因为它已被弃用。

    【讨论】:

      【解决方案4】:

      没关系,--proxy 似乎只适用于 http(s) 代理。

      来自“pip --help”

      --proxy <proxy>             Specify a proxy in the form
                                [user:passwd@]proxy.server:port.
      

      编辑:我终于放弃了 sock 代理并在我的远程机器上运行一个 java http 代理 (jhttp2.sourceforge.net/‎) 并使用 ssh -L port:localhost:port 将端口转发到远程机器并使用那个 http 代理。

      【讨论】:

        【解决方案5】:

        运行这两个命令:

        pip install pysocks5
        pip install --proxy socks5://[user:passwd@]proxy.server:port something
        

        【讨论】:

        • 现在看来这个包只是pysocks,你可以用socks4或socks5协议调用它。
        【解决方案6】:

        首先你可以尝试使用

        安装 proxychains-ng

        brew install proxychains-ng

        可以尝试使用 ssh -D like 制作 socks5 代理

        ssh -D 12345 -fqN root@[your-vps-ip]

        并使用公钥或密码访问您的 vps

        那么你就有了 proxychain 和 socks5。

        现在编辑 /etc/proxychains.conf ,只需将这一行添加到它的末尾

        socks5  127.0.0.1 12345
        

        并对此发表评论

        socks4  127.0.0.1 9050
        

        终于

        proxychains4 pip install [whateveryouwant]

        【讨论】:

          【解决方案7】:

          正如其他用户发布的那样,以下内容非常适合通过远程主机使用 pip:

          # SOCKS4 proxy creation
          ssh -D9999 <remote host URI>
          # use pip with the previously created proxy connection (requires pysocks)
          python3 -m pip install <package name> --proxy socks5:localhost:9999
          

          引导

          “但是我需要 pysocks 来通过代理运行 pip,而您无法连接到 pypi 下载软件包,因为我没有正常工作的 pip”

          解决此问题的一种方法是在另一台机器上下载 pysocks wheel 包:

          python3 -m pip download pysocks
          

          这会将 pysocks 包下载到您的机器上。将 PySocks-x-x-x-py3-none-any.whl 文件传输到需要代理功能的机器上并安装:

          python3 -m pip install PySocks*.whl
          

          【讨论】:

            【解决方案8】:

            在 Windows 上(我的是 Win2012R2)我通过执行以下步骤通过 SOCKS5-proxy 管理连接:

            所有用户级pip:

            1. 将此行添加到“C:\ProgramData\pip”下的 pip.ini 中:

              [global]  
              proxy = socks5:{proxy-ip}:{proxy-port}
              
            2. 打开 cmd.exe(可能但不一定以管理员身份...取决于您的文件系统配置...) 将代理变量明确设置为“无代理”!!! ...像这样:

              set http_proxy=no-proxy  
              set https_proxy=no-proxy
              
            3. 例如运行pip install your_module,最后通过 pip.ini 中指定的 socks5-proxy 运行

            对于用户级 pip,您需要根据 pip-documentation 将 pip.ini 放在其他位置。

            【讨论】:

              猜你喜欢
              • 2021-05-22
              • 2012-10-18
              • 1970-01-01
              • 2012-11-06
              • 1970-01-01
              • 2019-07-18
              • 2020-02-12
              • 2015-05-05
              • 2019-01-30
              相关资源
              最近更新 更多