UCRT64 / MSYS2 ZSH 环境下调用 Conda

文章讲述了在MSYS2环境下,由于 , , 符号和GBK编码问题导致conda命令无法正常使用。作者分析了问题来源于编码设置,并提出了通过修改zsh配置,使用别名机制设置PYTHONIOENCODING为utf8来解决UnicodeEncodeError。此外,还讨论了可能通过加载系统环境变量避免此类问题的方法,但未进行验证,建议使用最新版conda以减少潜在问题。
摘要由CSDN通过智能技术生成

1. 问题阐述

  • 问题1 (eval):11: parse error near `^M'

导致这个问题的原因是 \r, \n, \r\n 等符号无法被 MSYS2 准确识别
这个问题出在向 eval "$('/d/miniconda3/Scripts/conda.exe' 'shell.zsh' 'hook')" 配置后

在这里插入图片描述

  • 问题2 conda 命令无法使用:UnicodeEncodeError: 'gbk' codec can't encode character '\u279c'

这个问题出现在修改问题1中的配置成功将 conda 命令加入到 UCRT64 环境中之后

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
eval "$('/d/miniconda3/Scripts/conda.exe' 'shell.zsh' 'hook' | sed -e 's/"$CONDA_EXE" $_CE_M $_CE_CONDA "$@"/"$CONDA_EXE" $_CE_M $_CE_CONDA "$@" | tr -d \x27\\r\x27/g')"
# <<< conda initialize <<<

在这里插入图片描述

2. 问题分析与解决

  • 问题成因
    从报错的信息来看,conda命令之所以无法使用其问题根源出在编码方面,也就是说 MSYS2 中编码的环境变量是gbk,要解决这一问题只需要在使用 conda 命令时正确地配置编码的环境变量即可。
  • 问题解决
    使用zsh的别名机制,在调用conda命令的同时配置 python 的编码即可
  • 修改后的zsh配置
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
eval "$('/d/miniconda3/Scripts/conda.exe' 'shell.zsh' 'hook' | sed -e 's/"$CONDA_EXE" $_CE_M $_CE_CONDA "$@"/"$CONDA_EXE" $_CE_M $_CE_CONDA "$@" | tr -d \x27\\r\x27/g')"
# <<< conda initialize <<<
alias conda="PYTHONIOENCODING=utf8 conda"
  • 效果
    结果表明,conda 命令正常使用,miniconda 完整开启

在这里插入图片描述

3. 其他

  • 实际上在WndowsTerminal 中配置 MSYS2 时可以直接令其加载系统中已有的环境变量,这样也许就不存在这一问题
  • 出于隔离两个环境的目的,笔者通以配置环境变量的方式来加载各种环境变量,因此并未对这一想法进行验证
  • 使用该方法前,请尽可能使用你能接受的 conda 的新版本,这个问题的出现可能也与 conda 自身的 bug 相关,更新可能会修复某些潜在问题

参考文献

  1. I have installed MSYS2 and Anaconda3, then how can I use conda on MSYS2?
  2. Conda in Windows under MSYS2 and Zsh 的问题解决
  3. Conda in Windows under MSYS2 and Zsh line ending problems #9922
  4. Conda: UnicodeEncodeError: ‘charmap’ codec can’t encode character ‘\u2580’ in position 644: character maps to
  5. Can not activate/deactivate conda environment due to cmder lambda character not handled in conda encoder/decoder #7445
  6. Cannot activate Conda environment in Git Bash
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值