【问题标题】:Creating pyinstaller from my script, missing PySide2.QtXml in the result从我的脚本创建 pyinstaller,结果中缺少 PySide2.QtXml
【发布时间】:2018-11-07 20:30:07
【问题描述】:

我所做的是调用

pyinstaller example.py

pyinstaller 为我的脚本获取所有重要的库。值得一提的是,我正在使用 Windows 机器。但是当我运行结果时它告诉我:

λ .\example.exe
Traceback (most recent call last):
  File "example.py", line 6, in <module>
  File "c:\applications\anaconda\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 714, in load_module

    module = loader.load_module(fullname)
ImportError: could not import module 'PySide2.QtXml'
[7684] Failed to execute script example

所以这里有两个问题:

  1. 在我的 python 安装中找不到名为“PySide2.QtXml”的库。所以我假设 .dll 有不同的名称? .dll 的真实名称是什么?我找到了 Qt5Xml.dll,但我不知道这是否是正确的库。

  2. 一旦我有了我的库,我想将它添加到我的 example.spec 文件中。文档说它必须看起来像这样:

    binaries=[ ( '/usr/lib/libiodbc.2.dylib', 'libiodbc.dylib' ) ],
    

    但我不确定如何将它应用到我目前丢失的库中。我假设

    binaries=[ ( 'C:\somepath\Qt5Xml.dll', 'Qt5Xml.dll' ) ],
    

    会是这样吗?

提前致谢!

【问题讨论】:

  • 我现在的解决方案是从 QtXml 导入一些东西,这样 pyinstaller 就会知道这个库也必须包含在内。虽然这不是一个好的解决方案。如果有人知道更好,请告诉我!示例:“从 PySide2.QtXml 导入 QDomNode”

标签: python qt pyinstaller pyside2


【解决方案1】:

我遇到了同样的问题, 看起来它是一个隐藏的导入,您可以将其添加到您的规范文件或命令行中:

pyinstaller --hidden-import PySide2.QtXml example.py

或在您的规范文件中:

a = Analysis(['start.py'],
         pathex=['/some/path'],
         binaries=[],
         datas=[],
         hiddenimports=['PySide2.QtXml'],
         hookspath=[],
         runtime_hooks=[],
         excludes=[],
         win_no_prefer_redirects=False,
         win_private_assemblies=False,
         cipher=block_cipher,
         noarchive=False)

【讨论】:

  • 谢谢,我只是将它添加到我的脚本from PySide2 import QtXml 中,它运行良好。不需要命令行参数。
猜你喜欢
  • 2020-05-07
  • 2020-09-26
  • 1970-01-01
  • 2016-10-15
  • 2016-06-12
  • 2016-04-07
  • 1970-01-01
  • 2016-11-20
  • 1970-01-01
相关资源
最近更新 更多