使用代理运行conda

69

我在Windows上使用Anaconda 2.7,我的互联网连接使用代理。

以前,在使用Python 2.7(非Anaconda)时,我会像这样安装包:

pip install {packagename} --proxy proxy-us.bla.com:123

有没有一种方法可以使用代理参数运行 conda?在 conda help 中没有看到。

谢谢

7个回答

81

或者您可以从版本 4.4.x 开始使用下面的命令行

conda config --set proxy_servers.http http://id:pw@address:port
conda config --set proxy_servers.https https://id:pw@address:port

这对我来说完成了任务! :) - tanaque
5
现在可能有点晚了,但我想知道phyatt是否有anaconda的更新版本?在4.3.30上我得到了CondaValueError: Key 'proxy_servers.http' is not a known primitive parameter.的错误提示。 - craq
这对我有用!很奇怪,当我直接在文件中设置值时,它们没有被识别。(conda 4.8.2) - phi
这适用于Windows和Linux。非常感谢。 - Bandham Manikanta
我在我的主机上运行一个 px(https://github.com/genotrance/px)代理,以便在公司防火墙后面使用凭据进行身份验证。我的 px 正在监听端口 3131。我使用以下命令:RUN conda config --set proxy_servers.http http://host.docker.internal:3131 RUN conda config --set proxy_servers.https http://host.docker.internal:3131 RUN conda env create -f environment.yml - Manuel Alves

73

2
谢谢... 老实说,我早就看到这个了,但我更感兴趣的是命令行解决方案,而不是编辑一些文件... 你知道这样的吗? - AvidLearner
6
设置这些环境变量是一种命令行解决方案。 - asmeurer
5
如果您遇到了 SSL 错误消息,请确保将 ssl_verify: False 设置为正确的值。可能是因为您的雇主正在解密您的连接,所以 SSL 证书不是预期的那个(中间人攻击)。 - mimoralea
我会避免设置 ssl_verify: False,除非你确信你的雇主是中间人攻击者。通过禁用SSL验证,您完全禁用了安全检查,这些检查确保conda正在下载它应该下载的软件包。记住,conda下载的软件包可能运行任意代码! - asmeurer
1
如果出于安全原因我不想在.condarc中存储用户名和密码,而希望在需要时输入它们,该怎么办? - pe-perry
显示剩余3条评论

15

我犯的一个错误是将文件保存为a.condarcb.condarc

只需将其保存为.condarc,并将以下代码粘贴到文件中,然后将文件保存在您的主目录中。 根据需要更改主机名、用户等。

channels:
- defaults

show_channel_urls: True
allow_other_channels: True

proxy_servers:
    http: http://user:pass@hostname:port
    https: http://user:pass@hostname:port


ssl_verify: False

1
将ssl_verify设置为false不是在邀请中间人攻击吗? - joshmcode

6

我所采用的最佳方法是在使用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文档或其他来源中提到的其他方法,因为它们都需要将用户名/密码硬编码到:

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

所有这些方法都是不安全的,并且以后需要不断更新。而如果您忘记了要更新哪里?更多的故障排除将来临...


这使我能够创建Anaconda环境,但我仍然无法使用conda install安装软件。 - Philipp
你仍然将用户名/密码存储在命令历史记录中。键入至少密码到提示符中会更安全。 - Thomas
同时,这种方法不适用于PIP。 - VMAtm

5

我成功地让它工作了,而不需要输入用户名和密码:

conda config --set proxy_servers.https https://address:port

但是您是否仍需输入凭据,还是使用无需登录的代理服务器? - Ricardo Barros Lourenço

4

您可以通过将代理添加到.condarc文件中来配置conda代理,例如:

proxy_servers:
    http: http://user:pass@corp.com:8080
    https: https://user:pass@corp.com:8080

然后在Anaconda Power Prompt (base)命令提示符中运行以下命令:

C:\Users\user>

conda update -n root conda

0
在 Mac 上,对我有用的方法是进入钥匙串并更新公司内部存储库密钥的密码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接