树莓派导入pandas时触发UnicodeDecodeError错误求助
解决树莓派上Pandas导入时的UnicodeDecodeError问题
问题场景
- 环境:树莓派系统
Linux rp3b 5.10.17-v7+ #1414 SMP Fri Apr 30 13:18:35 BST 2021 armv7l GNU/Linux - 安装方式:通过
apt install python3-pandas安装Pandas - 触发错误的脚本片段:
#!/usr/bin/python3 # -*- coding: utf-8 -*- import io import subprocess import numpy as np import matplotlib.pyplot as plt import matplotlib.dates import pandas as pd import datetime
- 报错信息:
Traceback (most recent call last): File "./plotGasPerMonth.py", line 9, in <module> import pandas as pd File "/home/pi/.local/lib/python3.7/site-packages/pandas/__init__.py", line 22, in <module> from pandas.compat import ( File "/home/pi/.local/lib/python3.7/site-packages/pandas/compat/__init__.py", line 15, in <module> from pandas.compat.numpy import ( File "/home/pi/.local/lib/python3.7/site-packages/pandas/compat/numpy/__init__.py", line 7, in <module> from pandas.util.version import Version File "/home/pi/.local/lib/python3.7/site-packages/pandas/util/__init__.py", line 1, in <module> from pandas.util._decorators import ( # noqa File "/home/pi/.local/lib/python3.7/site-packages/pandas/util/_decorators.py", line 14, in <module> from pandas._libs.properties import cache_readonly # noqa File "/home/pi/.local/lib/python3.7/site-packages/pandas/_libs/__init__.py", line 13, in <module> from pandas._libs.interval import Interval File "pandas/_libs/interval.pyx", line 1, in init pandas._libs.interval File "pandas/_libs/hashtable.pyx", line 1, in init pandas._libs.hashtable File "pandas/_libs/missing.pyx", line 1, in init pandas._libs.missing File "/home/pi/.local/lib/python3.7/site-packages/pandas/_libs/tslibs/__init__.py", line 31, in <module> from pandas._libs.tslibs.conversion import ( File "pandas/_libs/tslibs/conversion.pyx", line 63, in init pandas._libs.tslibs.conversion File "pandas/_libs/tslibs/parsing.pyx", line 1, in init pandas._libs.tslibs.parsing File "pandas/_libs/tslibs/offsets.pyx", line 1, in init pandas._libs.tslibs.offsets File "pandas/_libs/tslibs/timedeltas.pyx", line 61, in init pandas._libs.tslibs.timedeltas UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 14: invalid start byte
解决方案
1. 清理冲突的Pandas版本
报错路径显示Pandas加载自用户本地目录/home/pi/.local/lib/python3.7/site-packages,说明可能存在apt安装版本与pip安装版本的冲突。执行以下命令清理:
pip3 uninstall pandas -y sudo apt reinstall python3-pandas -y
2. 检查并设置系统UTF-8编码
确保系统默认字符编码为UTF-8:
- 查看当前编码:
echo $LANG
- 若输出非UTF-8编码,通过树莓派配置工具修改:
sudo raspi-config
进入Localisation Options -> Locale,选择并设置UTF-8编码为默认,重启系统生效。
3. 在脚本中强制指定UTF-8编码
在脚本开头添加编码设置,再导入Pandas:
#!/usr/bin/python3 # -*- coding: utf-8 -*- import os import sys os.environ['PYTHONUTF8'] = '1' # Python3.7及以下版本可添加此句 if hasattr(sys, 'setdefaultencoding'): sys.setdefaultencoding('utf-8') import io import subprocess import numpy as np import matplotlib.pyplot as plt import matplotlib.dates import pandas as pd import datetime
4. 升级系统及依赖包
旧系统包可能存在兼容性问题,执行系统更新:
sudo apt update && sudo apt upgrade -y sudo apt reinstall python3-pandas python3-numpy python3-matplotlib -y
内容的提问来源于stack exchange,提问作者monok
相关产品推荐
相关产品推荐

