.condarc文件编码错误导致Anaconda无法启动故障一例

故障描述:一台安装了Anaconda 24.5.0的服务器,一日从开始菜单启动Anaconda Prompt时,回显“Error importing conda-build: 'gbk' codec can't decode byte 0xff in position 0: illegal multibyte sequence”错误,且Anaconda无法使用。完整错误如下:

Error importing conda-build: 'gbk' codec can't decode byte 0xff in position 0: illegal multibyte sequence
Error while loading conda entry point: conda-build ('gbk' codec can't decode byte 0xff in position 0: illegal multibyte sequence)

# >>>>>>>>>>>>>>>>>>>>>> ERROR REPORT <<<<<<<<<<<<<<<<<<<<<<

    Traceback (most recent call last):
      File "C:\ProgramData\anaconda3\Lib\site-packages\conda\exception_handler.py", line 18, in __call__
        return func(*args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^
      File "C:\ProgramData\anaconda3\Lib\site-packages\conda\cli\main.py", line 98, in main_sourced
        context.__init__()
      File "C:\ProgramData\anaconda3\Lib\site-packages\conda\base\context.py", line 496, in __init__
        self._set_search_path(
      File "C:\ProgramData\anaconda3\Lib\site-packages\conda\common\configuration.py", line 1425, in _set_search_path
        self._set_raw_data(dict(self._load_search_path(self._search_path)))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "C:\ProgramData\anaconda3\Lib\site-packages\conda\common\configuration.py", line 1414, in _load_search_path
        yield path, YamlRawParameter.make_raw_parameters_from_file(path)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "C:\ProgramData\anaconda3\Lib\site-packages\conda\common\configuration.py", line 398, in make_raw_parameters_from_file
        yaml_obj = yaml_round_trip_load(fh)
                   ^^^^^^^^^^^^^^^^^^^^^^^^
      File "C:\ProgramData\anaconda3\Lib\site-packages\conda\common\serialize.py", line 36, in yaml_round_trip_load
        return _yaml_round_trip().load(string)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "C:\ProgramData\anaconda3\Lib\site-packages\ruamel\yaml\main.py", line 432, in load
        constructor, parser = self.get_constructor_parser(stream)
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "C:\ProgramData\anaconda3\Lib\site-packages\ruamel\yaml\main.py", line 483, in get_constructor_parser
        self.reader.stream = stream
        ^^^^^^^^^^^^^^^^^^
      File "C:\ProgramData\anaconda3\Lib\site-packages\ruamel\yaml\reader.py", line 133, in stream
        self.determine_encoding()
      File "C:\ProgramData\anaconda3\Lib\site-packages\ruamel\yaml\reader.py", line 193, in determine_encoding
        self.update_raw()
      File "C:\ProgramData\anaconda3\Lib\site-packages\ruamel\yaml\reader.py", line 288, in update_raw
        data = self.stream.read(size)
               ^^^^^^^^^^^^^^^^^^^^^^
    UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 0: illegal multibyte sequence

`$ C:\ProgramData\anaconda3\Scripts\conda-script.py shell.cmd.exe activate C:\ProgramData\anaconda3`

  environment variables:
                 CIO_TEST=<not set>
    CONDA_ALLOW_SOFTLINKS=false
                CONDA_EXE=C:\ProgramData\anaconda3\condabin\..\Scripts\conda.exe
               CONDA_ROOT=C:\ProgramData\anaconda3
                CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.6
           CURL_CA_BUNDLE=<not set>
                 HOMEPATH=\Users\Administrator
               LD_PRELOAD=<not set>
                     PATH=C:\Program Files\NVIDIA GPU Computing
                          Toolkit\CUDA\v12.6\bin;C:\Program Files\NVIDIA GPU Computing
                          Toolkit\CUDA\v12.6\libnvvp;C:\Program Files\Microsoft\jdk-11.0.12.7-
                          hotspot\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:
                          \Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\
                          ;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program
                          Files\Git\cmd;C:\Program Files\MATLAB\R2024a\runtime\win64;C:\Program
                          Files\MATLAB\R2024a\bin;C:\Program Files\Microsoft SQL
                          Server\150\Tools\Binn\;C:\Program Files\dotnet\;C:\Program
                          Files\NVIDIA Corporation\Nsight Compute 2024.3.1\;C:\MinGW\bin;C:\User
                          s\Administrator\AppData\Local\Microsoft\WindowsApps;C:\Users\Administr
                          ator\.dotnet\tools;C:\Users\Administrator\AppData\Local\Programs\Ollam
                          a;
             PSMODULEPATH=C:\Program Files\WindowsPowerShell\Modules;C:\Windows\system32\Windows
                          PowerShell\v1.0\Modules
       REQUESTS_CA_BUNDLE=<not set>
            SSL_CERT_FILE=<not set>

     active environment : None
       user config file : C:\Users\Administrator\.condarc
 populated config files :
          conda version : 24.5.0
    conda-build version : error
         python version : 3.12.4.final.0
                 solver : libmamba (default)
       virtual packages : __archspec=1=x86_64_v4
                          __conda=24.5.0=0
                          __cuda=12.6=0
                          __win=0=0
       base environment : C:\ProgramData\anaconda3  (writable)
      conda av data dir : C:\ProgramData\anaconda3\etc\conda
  conda av metadata url : None
           channel URLs : https://repo.anaconda.com/pkgs/main/win-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/win-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/msys2/win-64
                          https://repo.anaconda.com/pkgs/msys2/noarch
          package cache : C:\ProgramData\anaconda3\pkgs
                          C:\Users\Administrator\.conda\pkgs
                          C:\Users\Administrator\AppData\Local\conda\conda\pkgs
       envs directories : C:\ProgramData\anaconda3\envs
                          C:\Users\Administrator\.conda\envs
                          C:\Users\Administrator\AppData\Local\conda\conda\envs
               platform : win-64
             user-agent : conda/24.5.0 requests/2.32.2 CPython/3.12.4 Windows/2022Server Windows/10.0.20348 solver/libmamba conda-libmamba-solver/24.1.0 libmambapy/1.5.8
          administrator : True
             netrc file : None
           offline mode : False

An unexpected error has occurred. Conda has prepared the above report.
If you suspect this error is being caused by a malfunctioning plugin,
consider using the --no-plugins option to turn off plugins.

Example: conda --no-plugins install <package>

Alternatively, you can set the CONDA_NO_PLUGINS environment variable on
the command line to run the command without plugins enabled.

Example: CONDA_NO_PLUGINS=true conda install <package>

故障处理:检查错误描述显示,出错时Anaconda尝试使用GBK编码解析某个文件,但在头部第一个字符遇到编号为0xFF的字符导致出错。怀疑某个文件错误地使用了带字节顺序标记(Byte Order Mark,BOM)的UTF-16 LE编码格式保存(0xFF 0xFE表示UTF-16 LE,0xFE 0xFF表示UTF-16 BE,0xEF 0xBB 0xBF表示UTF-8,0xFF 0xFE 0x00 0x00表示UTF-32 LE,0x00 0x00 0xFE 0xFF表示UTF-32 BE)。

进一步检查发现,位于%UserProfile%\目录下的.condarc配置文件在某次修改软件包源后,被错误地使用带BOM的UTF-16 LE存储,将该文件编码方式改为无BOM的UTF-8,故障解决。

参考资料:

https://zhuanlan.zhihu.com/p/597829245

https://blog.csdn.net/huangbinvip/article/details/127627832

it
除非特别注明,本页内容采用以下授权方式: Creative Commons Attribution-ShareAlike 3.0 License