如何让 Anaconda 在 HTTP 代理(不是 https)后面工作?

Posted

技术标签:

【中文标题】如何让 Anaconda 在 HTTP 代理(不是 https)后面工作?【英文标题】:How to make Anaconda work behind HTTP proxy (not https)? 【发布时间】:2016-08-12 06:13:45 【问题描述】:

我在工作中与 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。

【问题讨论】:

【参考方案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】:

以下解决方案对我有用:

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

设置 HTTPS_PROXY=proxy.yourorg.domain:portnumber

设置 HTTP_PROXY=proxy.yourorg.domain:portnumber


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

【讨论】:

【参考方案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

以上是关于如何让 Anaconda 在 HTTP 代理(不是 https)后面工作?的主要内容,如果未能解决你的问题,请参考以下文章

anaconda在公司内网如何避免安装过程中HTTP0的错误?(windows)

如何从 Anaconda 更新 Pandas,最后是不是可以使用 eclipse

代理(如 squid)如何知道连接是不是使用 http?

怎么把http代理转化Sock代理?

Anaconda资源收集

如何让 Keras 在 Anaconda 中使用 Tensorflow 后端?