处理python在Windows环境安装包时报编码错误的问题
问题说明
在Windows环境下安装一些python第三方库时,经常会遇到编码错误的问题:UnicodeDecodeError: 'gbk' codec can't decode byte 0x93 in position 815: illegal multibyte sequence
。
该问题很多时候只是包里面打开文件时没有指定编码方式,而Windows默认又是用gbk打开的。
File "D:\ProgramData\Anaconda3\envs\py37\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 349, in <module>
main()
File "D:\ProgramData\Anaconda3\envs\py37\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 331, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
File "D:\ProgramData\Anaconda3\envs\py37\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 117, in get_requires_for_build_wheel
return hook(config_settings)
File "C:\Users\LT-0041\AppData\Local\Temp\pip-build-env-_bnf9jol\overlay\Lib\site-packages\setuptools\build_meta.py", line 341, in get_requires_for_build_wheel
return self._get_build_requires(config_settings, requirements=['wheel'])
File "C:\Users\LT-0041\AppData\Local\Temp\pip-build-env-_bnf9jol\overlay\Lib\site-packages\setuptools\build_meta.py", line 323, in _get_build_requires
self.run_setup()
File "C:\Users\LT-0041\AppData\Local\Temp\pip-build-env-_bnf9jol\overlay\Lib\site-packages\setuptools\build_meta.py", line 488, in run_setup
self).run_setup(setup_script=setup_script)
File "C:\Users\LT-0041\AppData\Local\Temp\pip-build-env-_bnf9jol\overlay\Lib\site-packages\setuptools\build_meta.py", line 338, in run_setup
exec(code, locals())
File "<string>", line 15, in <module>
UnicodeDecodeError: 'gbk' codec can't decode byte 0x93 in position 815: illegal multibyte sequence
解决方案:
- 下载包
- 解压包
python setup.py install
- 根据报错信息找到错误位置,并添加默认打开文件的当时为utf-8
open("readme.md")
-->open("readme.md", encoding="utf-8")
- 根据报错信息找到错误位置,并添加默认打开文件的当时为utf-8
- 重新执行
python setup.py install
注:如需修改源setup.cfg
中添加
[easy_install]
index_url = https://pypi.mirrors.ustc.edu.cn/simple
该问题应该也可以通过临时修改Windows默认编码格式解决,但这里没有详细讨论。