【问题标题】:How to make Anaconda work behind HTTP proxy (not https)?如何让 Anaconda 在 HTTP 代理(不是 https)后面工作?
【发布时间】:2023-04-03 18:21:01
【问题描述】:

我在工作中与 Anaconda 合作时遇到了问题。

当我有以下环境变量时:

http_proxy: http://domain\username:password@corp.com:8080
https_proxy: https://domain\username:password@corp.com:8080

或者只是

http_proxy: http://server\username:password@corp.com:8080

设置然后 git 工作。但是 Anaconda 不起作用。 我正在尝试运行

conda update conda

我得到:

Could not connect to https://repo.continuum.io/pkgs....
Could not connect to https://repo.continuum.io/pkgs....

Anaconda 不能与 http 一起使用吗?并需要一个 https 代理?因为我认为我的公司可能没有 https 代理服务器设置(我只看到他们使用 http)。 或者有时我会收到错误:

File "c\Anaconda2\", line 340, in wait
    waiter.acquire()
KeyboardInterrupt
Could not connect to https://repo.continuum.io/pkgs....
Could not connect to https://repo.continuum.io/pkgs....

我使用的是 Windows 7。

【问题讨论】:

    标签: python git proxy anaconda conda


    【解决方案1】:

    我刚刚在 .condarc 中的代理配置条目后添加了一个斜杠,它神奇地开始工作。上面的一切都是无用的。

    顺便说一句,我在我的系统上使用 CNTLM 本地代理来进行 kerberos 身份验证,因此我不需要在 .condarc 中如此明显地配置凭据。

    proxy_servers:
        http: http://proxy.yourorg.org:port/
        https: http://proxy.yourorg.org:port/
    

    【讨论】:

      【解决方案2】:

      我继续在环境变量中添加HTTP_proxyHTTPS_proxy。使用的格式是“username:password@proxy_name:port”。然后我重新打开了 Anaconda 提示符。键入“set”以验证添加的变量是否存在于 Anaconda 环境中。现在您可以在 Ananconda 提示符中键入“spyder”。这个设置对我有用。

      最初我曾尝试使用代理参数设置“.condarc 文件”并尝试“conda update conda”但没有成功。

      【讨论】:

        【解决方案3】:

        以下解决方案对我有用:

        1. 打开 Anaconda 提示符
        2. 在运行任何 pip 或 conda 命令之前,请执行以下命令:

        设置 HTTPS_PROXY=proxy.yourorg.domain:portnumber

        设置 HTTP_PROXY=proxy.yourorg.domain:portnumber


        1. 现在您可以执行任何 pip 和/或 conda 命令来安装/卸载所需的软件包。
        2. 就是这样,它应该也适合你(希望如此)

        【讨论】:

          【解决方案4】:

          经过大量试验和错误,我们终于在 .condarc 文件中使用以下语法(没有“http://”)(我们有两个这样的文件,一个在用户文件夹中,另一个在实际用户的文件夹)。

          proxy_servers:
              http: proxyserver.org:portNumber
              https: proxyserver.org:portNumber
          

          代理服务器必须对 anaconda.org 和 anaconda.com 进行例外处理。重要!

          【讨论】:

          • 这困扰了我多年,感谢语法提示。 “http://”正在扼杀它。
          【解决方案5】:

          这个方法对我有用:

          从目录 ./Anaconda3/Library/bin/ 复制文件 libcrypto-1_1-x64.dlllibssl-1_1-x64.dll strong> 到 ./Anaconda3/DLLs.

          希望它能回答你的问题

          【讨论】:

            【解决方案6】:

            another post查看我的回答:

            我解决的最佳方法在之前使用condapip安装/更新命令设置代理环境变量。简单运行:

            set HTTP_PROXY=http://username:password@proxy_url:port

            例如,你的实际命令可能是这样的

            set HTTP_PROXY=http://yourname:your_password@proxy.your_company.com:8080

            如果你的公司使用https代理,那么也

            set HTTPS_PROXY=https://username:password@proxy_url:port

            一旦您退出 Anaconda 提示,此设置就会消失,因此您的用户名/密码将不会在会话结束后保存。

            我没有选择Anaconda documentation或其他来源中提到的其他方法,因为它们都需要将用户名/密码硬编码到

            • Windows 环境变量(这也需要首次重启 Anaconda 提示符)
            • Conda .condarc.netrc 配置文件(这也不适用于 PIP)
            • 启动 Anaconda 提示时加载的批处理/脚本文件(这也可能需要配置路径)

            所有这些都是不安全的,以后需要不断更新。如果你忘记在哪里更新?更多疑难解答将接踵而至...

            【讨论】:

            • 如何在 conda 中包含 PAC url?
            【解决方案7】:

            如果上述解决方案不适合你,你可以试试这个。

            转到您的 PC 设置,然后转到代理。只需为您的 PC 全局提供代理设置。当我这样做时,它对我有用。

            【讨论】:

              【解决方案8】:

              使用证书 yourcertname.pem 为我工作: https://aafaqueabdullah.wordpress.com/2017/04/10/ssl-authentication/

              【讨论】:

                【解决方案9】:

                以下内容帮助我为 Anaconda 永久设置代理:

                转到 C:/ProgramData/Anaconda3/etc/

                如果它还没有 conda 文件夹,请创建它。

                如果还没有文件夹 activate.d 和 deactive.d,请创建它们。

                同时在两个文件夹中创建 env_vars.bat。您的最终结构应如下图所示:

                在 activate.d 的 env_vars.bat 中,粘贴以下内容(将其更改为您自己的代理):

                set HTTP_PROXY=http://xx.xx.x.xx:xxxx/
                set FTP_PROXY=http://xx.xx.x.xx:xxxx/
                set HTTPS_PROXY=https://xx.xx.xxx.xx:xxxx/
                

                在 deactivate.d 的 env_vars.bat 中,粘贴以下内容(将变量留空):

                set HTTP_PROXY=
                set FTP_PROXY=
                set HTTPS_PROXY=
                

                关闭并重新打开 Anaconda 提示以激活更改。

                【讨论】:

                • 万岁!这对我有用。在我的情况下,仅为我安装了 Aanconda,因此必须在 C:\Users\xxxxxxx\AppData\Local\Continuum\anaconda3\etc\conda\activate.d 中创建 bat 文件
                【解决方案10】:

                上述修改 .condarc 的解决方案对我不起作用。 但是,我通过以https://user:pass@corp.com:8080 格式更新高级系统设置中的环境变量成功了。

                如果您的密码包含特殊字符,您需要按照 Wikipedia 上的百分比编码保留字符中的说明对它们进行转义。 https://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters

                【讨论】:

                • 非常感谢,特殊字符保留字符列表! - %21 # - %23 $ - %24 % - %25 & - %26 ' - %27 ( - %28 ) - %29 * - %2A + - %2B , - %2C / - %2F : - %3A ; - %3B = - %3D ? - %3F @ - %40 [ - %5B ] - %5D
                【解决方案11】:

                您需要在您的 Windows 用户区创建一个 .condarc 文件:

                C:\Users\<username>\
                

                该文件应包含:

                channels:
                - defaults
                
                # Show channel URLs when displaying what is going to be downloaded and
                # in 'conda list'. The default is False.
                show_channel_urls: True
                allow_other_channels: True
                
                proxy_servers:
                    http: http://proxy.yourorg.org:port
                    https: http://proxy.yourorg.org:port
                
                
                ssl_verify: False
                

                【讨论】:

                • 谢谢@toasteez,但这个解决方案不起作用。我完全遵循了您的建议,但是当我运行 conda update conda 进行测试时,我收到一条错误消息,告诉我“找不到 https 的代理。请参阅 url .....”
                • 尝试对两者使用相同的 http 地址 proxy.yourorg.org:port。还将 HTTP_PROXY 和 HTTPS_PROXY 的本地环境变量更新为相同。大多数组织都有一个带有 wpad.dat 文件的代理和一个额外的代理地址。你需要找到正确的。
                • 谢谢@toasteez。我的 HTTP_PROXY 和 HTTPS_PROXY 的环境变量设置为 username:pass@proxy.company.org:8080 和 HTTPS_PROXY 相同。我很肯定它们很好(或者至少是 HTTP_PROXY),因为我现在可以使用 git 来拉和推。但是 Anaconda 命令没有通过。我在哪里可以找到 wpad.dat 文件?也许我应该使用不同的 HTTPS_PROXY?
                • wpad.dat 通常在 IE 资源管理器 LAN 代理设置中。您可以将路径复制到浏览器中以查看文件。它可能会显示代理。我会将 .condarc https 条目指向 http。 https:proxy.yourorg.org:port 请注意,如果您找到正确的代理,您应该能够在没有 user:pass 的情况下完成这项工作。这是非常糟糕的做法,您的网络管理员可能会发现它。
                • @Alo 您可能还需要请求防火墙团队在 https 上打开对 repo 的访问:repo.continuum.io/pkgs/free/win-64
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-10-05
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多