Conda执行任意命令均卡在[y/N]提示输入无响应问题
问题表现
- 所有conda命令执行时都会先弹出
[y/N]确认提示,输入任意内容都无响应,进程直接卡住,哪怕是查询环境列表、输入不存在的无效命令都会触发该问题 - 追加
--yes命令行参数、在配置中开启always_yes: True都无法绕过该提示 - 问题复现样例:
$ conda env list [y/N]:
$ conda abc [y/N]:
出问题时用户目录下的.condarc配置内容如下:
channels: - remote-repos-conda - remote-repos-conda-forge - TEAM_CONDA_LIB - defaults - https://conda.anaconda.org/mosek channel_alias: http://TEAM_ARTIFACTORY:8081/artifactory/api/conda/ channel_priority: True always_yes: True allow_other_channels: False show_channel_urls: True ssl_verify: False auto_update_conda: False
解决步骤
- 先验证是否为配置文件导致的问题
执行命令将现有配置文件临时重命名,绕过配置加载:
mv ~/.condarc ~/.condarc.bak
重命名后执行conda --version,如果命令能正常输出版本号,说明问题由配置项错误导致。
- 修正配置错误项
原配置存在两处不兼容问题:channel_priority: True是旧版conda的废弃写法,新版conda中该参数仅接受三个字符串枚举值:strict(严格优先级,推荐)、flexible(柔性优先级)、disabled(关闭频道优先级),传入布尔值会导致配置解析阶段死锁,弹出无响应的[y/N]提示allow_other_channels: False配置与列表中的mosek公网源逻辑冲突:该参数开启后仅允许使用channel_alias路径下的私有频道,直接写公网源地址会触发源校验死锁
修正后的可用配置参考:
channels: - remote-repos-conda - remote-repos-conda-forge - TEAM_CONDA_LIB - defaults - mosek channel_alias: http://TEAM_ARTIFACTORY:8081/artifactory/api/conda/ channel_priority: strict always_yes: True show_channel_urls: True ssl_verify: False auto_update_conda: False
将上述内容写入新的~/.condarc文件即可。
- 如果重命名配置文件后问题依旧存在,说明是conda的shell初始化脚本损坏
执行命令重新初始化conda即可,注意把路径替换成本地conda的实际安装路径:
# bash用户执行 /your/conda/install/path/bin/conda init bash # zsh用户执行 /your/conda/install/path/bin/conda init zsh
执行完成后重启终端,conda功能即可恢复正常。
内容的提问来源于stack exchange,提问作者user3240688
相关产品推荐
相关产品推荐

