解决pycharm中的Git Bash无法加载conda虚拟环境(无法init)问题

部署运行你感兴趣的模型镜像

首先在默认的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安装目录的

【Windows】Pycharm配置GitBash终端并运行conda命令_pycharm git bash-优快云博客https://blog.youkuaiyun.com/qq_32614525/article/details/140307730

然后会发现虽然在窗口终端进行过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 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
```


#### 方法二:修改 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

本文仅记录个人解决问题的过程和分享经验用,侵权删除。

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

要在Git Bash中进入虚拟环境,可以按照以下步骤进行操作: 1. 首先,在Git Bash中使用conda命令创建一个虚拟环境。可以键入`conda create --name myenv`,其中myenv是你想要创建的虚拟环境的名称。这将创建一个名为myenv的虚拟环境。 2. 创建虚拟环境后,可以使用以下命令激活虚拟环境:`source activate myenv`,其中myenv是你创建的虚拟环境的名称。你会注意到命令提示符前面会显示虚拟环境的名称,表示你已经成功地进入了该虚拟环境。 3. 现在,你可以在Git Bash中使用Python和其他相关命令来执行你需要的操作了。例如,你可以使用`python`命令来启动Python解释器并执行Python代码。 请注意,在进入虚拟环境后,你可以安装和使用特定于该虚拟环境的Python包和工具,而不会影响到其他虚拟环境或系统中的Python环境。当你完成工作后,可以使用`source deactivate`命令退出虚拟环境,回到系统的默认环境中。 参考资料: : 这样要使用某个虚拟环境, 只需在Git Bash中键入 myenv 环境名。Git Bash中使用ipython。 : 参考:Windows 在 git bash下使用 conda 命令 - SiyuanChen - 博客园 二、初始化bash。 : 最近在Windows 10系统上安装了Python, 然后想到前段时间自己还安装了Git Bash, Git Bash的Linux命令很好用, 就想尝试一下在Git Bash上使用Python虚拟环境. Git Bash中使用Python。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [在Git Bash中使用Python虚拟环境](https://blog.youkuaiyun.com/u012130748/article/details/113072229)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [git bash 中使用conda虚拟环境(windows)](https://blog.youkuaiyun.com/b1440615597/article/details/126259067)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值