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

PyInstaller打包含snap7的Python项目时snap7.dll加载失败求助

解决PyInstaller打包snap7项目时的DLL加载错误

错误原因分析

  • 核心问题:PyInstaller未自动将snap7.dll打包进可执行文件,程序运行时临时解压目录找不到该动态库
  • WinError 193通常由32位/64位架构不匹配导致:比如Python是64位,但使用了32位的snap7.dll,反之亦然

具体解决步骤

1. 确认snap7.dll的路径与架构匹配

  • 找到Python环境中snap7的安装目录,一般路径为Lib\site-packages\snap7\lib\,目录内有对应架构的snap7.dll(64位或32位)
  • 验证Python与DLL的架构一致性:
    打开命令行执行:
    python -c "import sys; print(sys.maxsize > 2**32)"
    
    返回True为64位Python,False为32位,确保使用同架构的snap7.dll,不匹配则重新安装对应版本的python-snap7

2. 手动指定PyInstaller打包时包含snap7.dll

有两种实现方式:

方式一:命令行参数直接指定

执行打包命令时,用--add-data参数将snap7.dll加入打包文件:

pyinstaller --onefile --add-data "path\to\snap7.dll;snap7\lib" main.py
  • Windows系统用;分隔源路径和目标路径,Linux/macOS用:
  • 目标路径需与snap7库加载时的预期路径一致,即snap7\lib\

方式二:修改.spec文件

  1. 先生成.spec配置文件:
pyinstaller --onefile main.py
  1. 打开生成的main.spec,在datas列表中添加snap7.dll的路径配置:
a = Analysis(
    ['main.py'],
    datas=[('path\\to\\snap7.dll', 'snap7\\lib')],
    # 保留其他原有配置
)
  1. 基于修改后的.spec文件重新打包:
pyinstaller main.spec

3. 验证打包结果

  • 打包完成后运行dist目录下的exe文件,检查是否仍有DLL加载错误
  • 若问题未解决,可临时将snap7.dll复制到exe所在的dist目录下测试,确认DLL本身无问题后再调整PyInstaller配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:02:18