如何让 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_proxy
和HTTPS_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.dll 和 libssl-1_1-x64.dll strong> 到 ./Anaconda3/DLLs.
希望它能回答你的问题
【讨论】:
【参考方案6】:在another post查看我的回答:
我解决的最佳方法是在之前使用conda
或pip
安装/更新命令设置代理环境变量。简单运行:
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)