首先在默认的Git Bash应用程序打开加载conda环境出现gbk编码问题的如下
$ conda activate python2.7 Exception in thread Thread-3 (_readerthread): Traceback (most recent call last): File "C:\Software\Conda\Lib\threading.py", line 1073, in _bootstrap_inner self.run() File "C:\Software\Conda\Lib\threading.py", line 1010, in run self._target(*self._args, **self._kwargs) File "C:\Software\Conda\Lib\subprocess.py", line 1599, in _readerthread buffer.append(fh.read()) ^^^^^^^^^ UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 495: illegal multibyte sequence Unexpected cygpath error ('NoneType' object has no attribute 'strip')
可以看这位大佬的
Anaconda踩坑记-UnicodeDecodeError报错
https://hang.su/blog/detail/b6960857-e96e-47f2-8070-d1d6153f4dfa
然后在pycharm配置Git Bash终端可以看这个,记得把conda.sh添加路径到~/.bashrc的,路径换成自己conda安装目录的
然后会发现虽然在窗口终端进行过conda init ,窗口的终端可以加载虚拟环境(conda activate),但在pycharm中仍然不能运行,如果出现了需要init,提示No action taken,一直init不成功.可以试试这些解决方案:
conda激活需要conda init ,而conda init 又报错‘No action taken.’-优快云博客
https://blog.youkuaiyun.com/h420405961/article/details/124657340或者问题:执行conda init 提示 No action taken,然后无法正确激活环境_no action taken.-优快云博客
https://blog.youkuaiyun.com/weixin_44162814/article/details/135225641
在尝试第一个方案的时候,到这一步骤时
又报如下错误

总之一直有gbk和utf-8的错误,经过GPT解释如下:
根据提供的上下文和错误信息,以下是问题的分析和解决方案:
### 问题分析
1. **错误原因**:
- 错误发生在 `main_sourced` 函数中,具体是 `activator.execute()` 的输出结果被传递给 `print` 函数时。
- 错误提示为 `UnicodeEncodeError: 'gbk' codec can't encode character '\ue0a1' in position 1484: illegal multibyte sequence`。
- 这表明在当前系统编码(GBK)下,字符 `\ue0a1` 无法被正确编码。2. **背景**:
- 在 Windows 系统中,默认的控制台编码通常是 GBK。
- 如果 `activator.execute()` 返回的结果包含非 GBK 支持的字符(如某些特殊符号或 Unicode 字符),就会导致编码错误。3. **可能的原因**:
- Git Bash 默认使用 UTF-8 编码,但 Conda 的某些内部逻辑可能仍然依赖于系统的默认编码(GBK)。
- `conda` 在激活环境时生成的字符串中可能包含不被 GBK 支持的字符。---
### 解决方案
#### 方法一:设置 Python 的默认编码为 UTF-8
Git Bash 使用 UTF-8 编码,因此可以通过修改 Python 的默认编码来解决此问题。可以在 `main_sourced` 函数中添加以下代码:```python
def main_sourced(shell, *args, **kwargs):
"""Entrypoint for the "sourced" invocation of CLI interface. E.g. `conda activate`."""
shell = shell.replace("shell.", "", 1)from ..base.context import context
context.__init__()
from ..activate import _build_activator_cls
try:
activator_cls = _build_activator_cls(shell)
except KeyError:
from ..exceptions import CondaErrorraise CondaError(f"{shell} is not a supported shell.")
activator = activator_cls(args)
# 设置标准输出和错误输出的编码为 UTF-8
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')print(activator.execute(), end="")
return 0
```
#### 方法二:修改 Conda 配置以避免特殊字符
如果问题出在 Conda 激活脚本中生成的特殊字符,可以通过以下方式避免:
1. 修改 Conda 的配置文件 `~/.condarc`,确保没有使用特殊字符。
2. 如果问题出在虚拟环境名称中包含特殊字符,可以重新创建一个不包含特殊字符的虚拟环境。#### 方法三:强制设置 Git Bash 的编码为 UTF-8
确保 Git Bash 使用 UTF-8 编码:
1. 打开 Git Bash。
2. 输入以下命令并回车:
```bash
export LC_ALL=en_US.UTF-8
```3. 再次运行 Conda 命令,观察是否解决问题。
#### 方法四:更新 Conda 版本
旧版本的 Conda 可能存在编码兼容性问题。建议更新到最新版本:
```bash
conda update conda
```
---### 总结
- **短期解决方案**:通过方法三设置 Git Bash 的编码为 UTF-8。
- **长期解决方案**:通过方法一修改 Python 默认编码,或通过方法四更新 Conda 版本。
- 推荐优先使用方法一或方法四,确保系统的兼容性和稳定性。
采取第一种方案,修改了python默认编码为utf-8,把上述报错中第二行main.py的main_sourced函数的 activator = activator_cls(args)后,print前位置,添加代码后如下,成功解决
def main_sourced(shell, *args, **kwargs):
"""Entrypoint for the "sourced" invocation of CLI interface. E.g. `conda activate`."""
shell = shell.replace("shell.", "", 1)
from ..base.context import context
context.__init__()
from ..activate import _build_activator_cls
try:
activator_cls = _build_activator_cls(shell)
except KeyError:
from ..exceptions import CondaError
raise CondaError(f"{shell} is not a supported shell.")
activator = activator_cls(args)
# 设置标准输出和错误输出的编码为 UTF-8
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')
print(activator.execute(), end="")
return 0
本文仅记录个人解决问题的过程和分享经验用,侵权删除。
4万+





