如何解决charset_normalizer包中的“SyntaxError: Non-ASCII character '\xd1'”错误?
嗨,我之前也碰到过一模一样的问题,结合你用Python3.9在Debian上的情况,还有已经设置了PYTHONUTF8=1的前提,给你几个实用的解决办法:
优先升级charset_normalizer到最新版本
大概率你安装的这个包版本比较旧,里面的__init__.py文件没按照PEP 263的要求添加编码声明,导致Python解析时出错。直接在终端运行升级命令就行:pip install --upgrade charset_normalizer要是你用的是系统级Python权限不够,就加
--user参数:pip install --upgrade charset_normalizer --user手动给问题文件添加编码声明
如果升级之后还是有问题,或者暂时没法升级,可以直接修改报错的那个文件。找到路径/usr/local/lib/python3.9/dist-packages/charset_normalizer/__init__.py,用文本编辑器打开它,在文件最开头(第一行或者第二行,必须在任何代码之前)加上编码声明:# -*- coding: utf-8 -*-这样Python就会用UTF-8编码来解析这个文件,自然就不会报非ASCII字符的错误了。不过要注意,以后如果升级这个包,手动修改的内容会被覆盖,所以这个方法更适合临时救急。
确认PYTHONUTF8环境变量是否真正生效
虽然你说已经设置了PYTHONUTF8=1,但有时候可能环境变量没正确加载。先在终端里输入echo $PYTHONUTF8,看看输出是不是1。如果不是,临时生效可以运行:export PYTHONUTF8=1之后再运行你的脚本
python myscript.py试试。要是想让这个设置永久生效,就把上面的export命令加到~/.bashrc或者~/.profile文件里,然后运行source ~/.bashrc(或者对应的profile文件)让设置立刻生效。
备注:内容来源于stack exchange,提问作者SMartDev

