189******31
deepin
2025-04-27 11:26 已经解决,通过在本地重新编译libexpat,并让spec文件中引用
- 首先,需要下载并编译libexpat 2.6.4版本:
# 创建工作目录
mkdir -p ~/expat_build
cd ~/expat_build
# 下载expat 2.6.4源码
wget https://github.com/libexpat/libexpat/releases/download/R_2_6_4/expat-2.6.4.tar.gz
tar -xzf expat-2.6.4.tar.gz
cd expat-2.6.4
# 配置编译选项(指定安装到用户目录下的自定义位置)
./configure --prefix=$HOME/expat_install
# 编译
make -j$(nproc)
# 安装到指定目录
make install
- 修改.spec文件
# -*- mode: python ; coding: utf-8 -*-
a = Analysis(
['your_script.py'],
pathex=[],
binaries=[
('~/expat_install/lib/libexpat.so.1', '.'),
('~/expat_install/lib/libexpat.so.1.10.0', '.') # 版本号可能会有所不同
],
datas=[],
hiddenimports=[],
hookspath=['./hooks'],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=None,
noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=None)
exe = EXE(...) # 保持原有配置
coll = COLLECT(...) # 保持原有配置
Reply Like 0 View the author
用pyinstaller打包的python程序报错,python=3.11.11,报错如下:
Traceback (most recent call last):
File "PyInstaller/hooks/rthooks/pyi_rth_pkgres.py", line 170, in
File "PyInstaller/hooks/rthooks/pyi_rth_pkgres.py", line 37, in _pyi_rthook
File "PyInstaller/loader/pyimod02_importers.py", line 450, in exec_module
File "pkg_resources/init.py", line 42, in
File "PyInstaller/loader/pyimod02_importers.py", line 450, in exec_module
File "plistlib.py", line 70, in
File "PyInstaller/loader/pyimod02_importers.py", line 450, in exec_module
File "xml/parsers/expat.py", line 4, in
ImportError: /home/lenovo/project/hirpa2/dist/hirpa/_internal/lib-dynload/pyexpat.cpython-311-x86_64-linux-gnu.so: undefined symbol: XML_SetReparseDeferralEnabled
[PYI-1096641:ERROR] Failed to execute script 'pyi_rth_pkgres' due to unhandled exception!
uos 20只能安装libexpat1=2.2,现在应该如何解决,libexpat官网要求2.4+才有XML_SetReparseDeferralEnabled,这个应该如何解决?