ARM架构Arch系Orange Pi OS中pip install无法运行的问题排查
问题场景
- 设备:Orange Pi Zero 2W(4GB内存)
- 系统:Orange Pi OS
- 前置操作:已通过
pacman将pip更新至官方最新版本24.0 - 触发报错的操作:执行
python3.12 -m pip install pn532pi或pip install --user pn532pi安装任何Python包时,均出现以下错误:
Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "/usr/lib/python3.12/site-packages/pip/__main__.py", line 24, in <module> sys.exit(_main()) ^^^^^^^ File "/usr/lib/python3.12/site-packages/pip/_internal/cli/main.py", line 77, in main command = create_command(cmd_name, isolated=("--isolated" in cmd_args)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/pip/_internal/commands/__init__.py", line 114, in create_command module = importlib.import_module(module_path) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1387, in _gcd_import File "<frozen importlib._bootstrap>", line 1360, in _find_and_load File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 935, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 995, in exec_module File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed File "/usr/lib/python3.12/site-packages/pip/_internal/commands/install.py", line 15, in <module> from pip._internal.cli.req_command import ( File "/usr/lib/python3.12/site-packages/pip/_internal/cli/req_command.py", line 21, in <module> from pip._internal.index.package_finder import PackageFinder File "/usr/lib/python3.12/site-packages/pip/_internal/index/package_finder.py", line 30, in <module> from pip._internal.req import InstallRequirement File "/usr/lib/python3.12/site-packages/pip/_internal/req/__init__.py", line 8, in <module> from .req_install import InstallRequirement File "/usr/lib/python3.12/site-packages/pip/_internal/req/req_install.py", line 40, in <module> from pip._internal.operations.install.wheel import install_wheel File "/usr/lib/python3.12/site-packages/pip/_internal/operations/install/wheel.py", line 39, in <module> from pip._vendor.distlib.scripts import ScriptMaker File "/usr/lib/python3.12/site-packages/pip/_vendor/distlib/scripts.py", line 16, in <module> from .compat import sysconfig, detect_encoding, ZipFile File "/usr/lib/python3.12/site-packages/pip/_vendor/distlib/compat.py", line 81, in <module> import xmlrpc.client as xmlrpclib File "/usr/lib/python3.12/xmlrpc/client.py", line 138, in <module> from xml.parsers import expat File "/usr/lib/python3.12/xml/parsers/expat.py", line 4, in <module> from pyexpat import * ImportError: /usr/lib/python3.12/lib-dynload/pyexpat.cpython-312-aarch64-linux-gnu.so: undefined symbol: XML_SetReparseDeferralEnabled
修复方案
错误根源是pyexpat模块依赖的系统expat库版本不兼容,导致缺失XML_SetReparseDeferralEnabled符号。按以下步骤尝试修复:
步骤1:重新安装系统expat库
先确保系统的expat库完整且版本匹配,执行:sudo pacman -S --reinstall expat完成后重新尝试pip安装操作。
步骤2:重新编译Python的pyexpat模块
如果步骤1无效,需要重新编译Python绑定的pyexpat模块:- 安装Python编译依赖:
sudo pacman -S base-devel python3.12-dev - 下载对应版本的Python3.12源码,解压后进入
Modules/expat目录,执行编译安装:cd /path/to/python3.12-source/Modules/expat python3.12 setup.py build sudo python3.12 setup.py install
- 安装Python编译依赖:
步骤3:降级pip版本(临时 workaround)
若以上步骤都无法解决,可尝试降级pip到兼容性更稳定的版本:python3.12 -m pip install pip==23.3.1 --force-reinstall
内容的提问来源于stack exchange,提问作者Tyron Holloway-Hill
相关产品推荐
相关产品推荐

