PyInstaller打包Python项目后出现pdfium库找不到的报错问题
解决PyInstaller打包pypdfium2时的ImportError问题
问题原因
pypdfium2依赖的pdfium二进制库是动态加载的,PyInstaller默认不会自动收集这类非Python代码的二进制文件,导致打包后的EXE运行时找不到该库。
解决方案
方法1:用PyInstaller参数自动收集依赖
直接在打包命令中添加--collect-all pypdfium2_raw,让PyInstaller收集pypdfium2_raw包下的所有文件(包括二进制库):
pyinstaller --onefile --collect-all pypdfium2_raw app.py
--onefile是生成单EXE文件的参数,不需要单文件可去掉。
方法2:通过Spec文件手动添加二进制文件
- 生成默认spec文件:
pyinstaller app.py --name your_app_name
- 打开
your_app_name.spec,修改datas列表,添加pdfium二进制文件的路径映射(替换为你本地实际路径,Windows 64位示例):
datas=[ (r'C:\Python310\Lib\site-packages\pypdfium2_raw\bin\win64\pdfium.dll', '.') ]
- 用修改后的spec文件重新打包:
pyinstaller your_app_name.spec
方法3:在代码中指定pdfium库路径
导入pypdfium2前,手动设置环境变量指定pdfium.dll路径(需确保打包后该文件与EXE同目录):
import os os.environ['PDFIUM_LIBRARY_PATH'] = os.path.join(os.getcwd(), 'pdfium.dll') import pypdfium2 as pdfium # 后续业务代码不变
打包后需手动将pdfium.dll复制到EXE输出目录。
内容的提问来源于stack exchange,提问作者Sanjar
相关产品推荐
相关产品推荐

