开发者社区 问答 正文

Pyinstaller不包含模块

我目前正在开发一个小型图形化python程序,并且正在使用PyQT。我当前的目标是将程序打包到可执行文件中,以分发给其他用户。

我为此任务选择了工具pyinstaller。我正在使用pyinstaller --clean --hidden-import qtpy --onefile -n Monitor3 main.py打包命令。该命令生成一个exe文件,但我在日志中看到以下错误ERROR: Hidden import 'qtpy' not found。我已验证pyqt是通过pip安装的。

安装了以下版本,在这里 我使用Python 3.7.5 输入图像描述。

如果我仍然运行生成的可执行文件,则会出现以下错误

Traceback (most recent call last):
  File "main.py", line 5, in <module>
ModuleNotFoundError: No module named 'qtpy'
[9676] Failed to execute script main

展开
收起
Puppet 2019-12-10 21:54:36 499 分享 版权
阿里云 AI 助理回答

遇到这个问题,通常意味着PyInstaller在打包时没有正确地找到或包含qtpy模块。尽管你已经指定了--hidden-import qtpy,但似乎这个指令没有生效。这里有几个可能的解决方案你可以尝试:

  1. 直接安装qtpy:首先确认是否直接安装了qtpy。有时候项目依赖中可能隐式使用了qtpy而未明确列出。可以通过运行pip install qtpy来确保它被安装。

  2. 更新PyInstaller:确保你的PyInstaller是最新版本。老版本可能不支持某些库或者存在已知问题。可以使用pip install -U pyinstaller命令来更新。

  3. 手动指定路径:如果上述方法无效,你可能需要更精确地告诉PyInstaller去哪里找qtpy。这可以通过编写一个.spec文件来实现,而不是直接在命令行中使用参数。创建一个名为main.spec的文件,内容如下(假设你的脚本结构简单):

    # main.spec
    from PyInstaller.utils.hooks import collect_submodules
    
    hiddenimports = collect_submodules('qtpy')
    
    a = Analysis(['main.py'],
                pathex=['/path/to/your/python/script'],  # 替换为你的脚本路径
                binaries=[],
                datas=[],
                hiddenimports=hiddenimports,
                hookspath=[],
                runtime_hooks=[],
                excludes=[],
                win_no_prefer_redirects=False,
                win_private_assemblies=False,
                cipher=None,
                noarchive=False)
    pyz = PYZ(a.pure, a.zipped_data,
             cipher=None)
    exe = EXE(pyz,
              a.scripts,
              a.binaries,
              a.zipfiles,
              a.datas,
              [],
              name='Monitor3',
              debug=False,
              bootloader_ignore_signals=False,
              strip=False,
              upx=True,
              upx_exclude=[],
              runtime_tmpdir=None,
              console=True )
    

    然后使用pyinstaller main.spec来构建你的可执行文件。

  4. 检查环境和虚拟环境:如果你在虚拟环境中开发,确保使用该虚拟环境中的pipPyInstaller来安装和打包。有时候全局安装和虚拟环境安装的混淆会导致问题。

  5. 清理并重试:有时候,清理之前的构建文件和缓存可以帮助解决问题。你可以先删除之前生成的distbuild目录,然后再尝试重新打包。

希望以上建议能帮助你解决遇到的问题。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: