jiamingxiu 2024-09-29 17:00 采纳率: 0%
浏览 2

pyinstaller打包问题咨询

编写好的python脚本在pycharm中运行良好,使用pyinstaller打包.exe可执行文件后,运行该文件报错,报错如下,显示无法加载zuds.dll,但是打包shi打包时已经加进去了。
打包命令:pyinstaller -i 1.ico --add-binary 'zuds.dll;.' --add-binary 'zlgcan.dll;.' -D .\zuds_get_information.py

Traceback (most recent call last):
  File "PyInstaller\loader\pyimod03_ctypes.py", line 53, in __init__
  File "ctypes\__init__.py", line 369, in __init__
OSError: [WinError 193] %1 不是有效的 Win32 应用程序。

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "zuds_get_information.py", line 366, in <module>
    zudslib = ZUDS()
  File "zuds_get_information.py", line 106, in __init__
    self.__dll = ctypes.cdll.LoadLibrary("./zuds.dll")
  File "ctypes\__init__.py", line 447, in LoadLibrary
  File "PyInstaller\loader\pyimod03_ctypes.py", line 55, in __init__
pyimod03_ctypes.PyInstallerImportError: Failed to load dynlib/dll './zuds.dll'. Most likely this dynlib/dll was not found when the application was frozen.
[1080] Failed to execute script 'zuds_get_information' due to unhandled exception!

  • 写回答

2条回答 默认 最新

  • 一轮明月照丘壑 2024-09-29 17:01
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    从你的错误跟踪来看,似乎你的 zuds.dll 无法被正确地加载,报错是 "Failed to load dynlib/dll './zuds.dll'" 和 "WinError 193"。这可能有几个原因,我将提供一些可能的解决方案:

    1. 确保 DLL 文件位置正确:你的打包命令已经包含了 --add-binary 'zuds.dll;.' 这一选项,这通常会将 zuds.dll 打包进生成的 .exe 文件所在的同一目录中。请确认 zuds.dll 文件是否真的存在,并且其路径是否正确。如果你把 DLL 放在别的位置,或者名称拼写错误,都可能引发这个问题。你可以尝试直接在打包后的文件夹中查找 zuds.dll 文件,确认其存在并检查其完整性。
    2. 检查 DLL 的兼容性:确保 zuds.dll 是针对你的操作系统和 Python 版本编译的。例如,如果你的操作系统是 64 位的,但 DLL 是为 32 位系统编译的,就可能会出现兼容性问题。这种情况下你需要找到对应的 64 位 DLL 文件。你可以使用 dumpbin /headers zuds.dll 命令在命令行中查看 DLL 的位数信息。
    3. 尝试不同的打包方式:有时,--add-binary 选项可能无法正确地将文件包含到打包的目录中。你可以尝试使用 --add-data 选项代替 --add-binary,然后指定 DLL 文件在打包后的目录中的位置。这样可以帮助确保 DLL 文件正确地与可执行文件一同被打包和分布。你可以试试以下命令:pyinstaller -i 1.ico --add-data 'zuds.dll;.' --add-data 'zlgcan.dll;.' -D .\zuds_get_information.py。这样可能会解决问题。
    4. 确认脚本运行时环境的正确性:确保你的 Python 脚本在运行时能够找到 DLL 文件的位置。你可以尝试在打包的脚本中直接引用完整的 DLL 文件路径(例如在脚本中指定为 "C:/path_to_your_dll/zuds.dll"),或者在运行打包后的程序时设置环境变量,让程序知道 DLL 文件的位置。

    如果以上方法都不能解决问题,你可能需要进一步检查你的代码和环境设置,看看是否有其他因素导致这个问题。同时,也可以尝试查阅 PyInstaller 的官方文档或社区论坛,看看是否有其他用户遇到过类似的问题和解决方案。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月29日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?