You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyInstaller打包相机应用遇ImportError:无法加载ids_peak_ipl扩展模块

问题描述

我使用厂商提供的两个库开发了一款相机处理应用,已下载对应的wheel包并在虚拟环境中执行以下命令安装:

pip install ids_peak-1.7.2.0-cp38-cp38-win_amd64.whl
pip install ids_peak_ipl-1.10.0.0-cp38-cp38-win_amd64.whl

该应用在PyCharm中运行完全正常。尝试用PyInstaller打包成exe文件,已在虚拟环境中安装PyInstaller,执行命令:

pyinstaller -F -w -i IDS.ico main.py

但运行生成的exe时出现如下错误:

ImportError: Could not load the python extension module! Either the shared library "ids_peak_ipl" could not be found or the library version you are using is older than the bindings (expected v1.10.0.0)

warn-main文件中包含以下内容:

missing module named __builtin__ - imported by ids_peak.ids_peak (optional), ids_peak_ipl.ids_peak_ipl (optional), ids_peak.ids_peak_ipl_extension (optional) 
missing module named _peak_ipl_python_interface - imported by ids_peak_ipl.ids_peak_ipl (conditional)
missing module named _posixsubprocess - imported by subprocess (optional) 
missing module named _ids_peak_ipl_python_extension - imported by ids_peak.ids_peak_ipl_extension (conditional) 
missing module named _ids_peak_python_interface - imported by ids_peak.ids_peak (conditional)

不太熟悉PyInstaller,请问该如何解决此问题?

解决方案

1. 显式指定缺失的扩展模块

PyInstaller未自动识别IDS库的底层扩展模块,打包时需手动添加--hidden-import参数声明这些模块:

pyinstaller -F -w -i IDS.ico --hidden-import=_peak_ipl_python_interface --hidden-import=_ids_peak_ipl_python_extension --hidden-import=_ids_peak_python_interface main.py

2. 手动引入依赖动态链接库

IDS库的wheel包包含运行必需的.dll文件,需确保这些文件被打包进exe或放在exe同目录:

  • 找到虚拟环境中Lib\site-packages\ids_peak和ids_peak_ipl目录下的所有.dll文件
  • 用--add-data参数在打包时自动复制这些文件:
pyinstaller -F -w -i IDS.ico --hidden-import=_peak_ipl_python_interface --hidden-import=_ids_peak_ipl_python_extension --hidden-import=_ids_peak_python_interface --add-data "<虚拟环境路径>\Lib\site-packages\ids_peak\*.dll;." --add-data "<虚拟环境路径>\Lib\site-packages\ids_peak_ipl\*.dll;." main.py

注意替换<虚拟环境路径>为你的实际虚拟环境路径,Windows下路径分隔符用\,--add-data格式为源路径;目标路径(分号分隔)。

3. 通过spec文件自定义打包配置

如果命令行参数过于繁琐,可生成并修改spec文件:

  1. 生成初始spec文件:
pyinstaller -F -w -i IDS.ico main.py
  1. 打开main.spec,修改hiddenimports和datas字段:
hiddenimports=['_peak_ipl_python_interface', '_ids_peak_ipl_python_extension', '_ids_peak_python_interface'],
datas=[
    ('<虚拟环境路径>\\Lib\\site-packages\\ids_peak\\*.dll', '.'),
    ('<虚拟环境路径>\\Lib\\site-packages\\ids_peak_ipl\\*.dll', '.'),
]
  1. 用spec文件重新打包:
pyinstaller main.spec

4. 验证版本一致性

确认安装的wheel包版本与报错提示的要求完全匹配(ids_peak_ipl需为v1.10.0.0),避免因版本不兼容导致加载失败。

内容的提问来源于stack exchange,提问作者Medestrac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 07:02:53