root安装Anaconda4.10.1多用户使用时source activate无响应如何解决
问题成因
- Anaconda 4.10.1版本的
activate脚本未加入PATH重复项校验逻辑,执行时会默认将conda的bin路径追加到PATH环境变量头部,不会判断路径是否已存在 - 全局安装的Anaconda开放全量rwx权限后,
activate脚本执行时会自动触发conda init的全局适配逻辑,而conda init写入用户shell配置(.bashrc/.zshrc等)的初始化代码,本身会再次调用activate激活base环境,形成「执行activate → 触发conda init修改PATH → 再次调用activate」的递归死循环 - 若用户家目录下的
.condarc或全局/opt/anaconda3/.condarc中开启了auto_activate_base: true配置,会进一步提升循环触发概率,最终导致shell持续无响应
解决方案
临时修复(单次会话生效)
执行激活命令前先关闭conda自动激活base环境的配置,再执行激活操作:
export CONDA_AUTO_ACTIVATE_BASE=false source /opt/anaconda3/bin/activate
永久修复
步骤1:清理错误的初始化配置
终止无响应的shell进程,新开终端执行以下命令清理之前可能错误写入用户shell配置的conda初始化片段:
# bash用户执行,zsh用户替换为~/.zshrc sed -i '/>>> conda initialize >>>/,/<<< conda initialize <<</d' ~/.bashrc
步骤2:调整全局Anaconda目录权限(root身份执行)
普通用户仅需读取和执行全局Anaconda的二进制文件,无需写入权限,回收多余的写入权限避免脚本逻辑误判:
chmod -R 755 /opt/anaconda3
步骤3:普通用户手动配置conda路径
无需执行conda init,手动将conda路径加入个人shell配置即可:
# bash用户写入~/.bashrc,zsh用户写入~/.zshrc echo 'export PATH=/opt/anaconda3/bin:$PATH' >> ~/.bashrc echo 'export CONDA_AUTO_ACTIVATE_BASE=false' >> ~/.bashrc # 生效配置 source ~/.bashrc
配置完成后普通用户创建的专属环境会默认存储在自身家目录的.conda/envs路径下,互不影响。
可选全局修复方案
root身份将全局conda版本升级到4.12及以上,该版本已修复PATH重复写入和递归调用的bug:
# root身份执行 source /opt/anaconda3/bin/activate conda update -n base conda
内容的提问来源于stack exchange,提问作者Charles
相关产品推荐
相关产品推荐

