【问题标题】:Python EXE file: Why do I get an ImportError when running it?Python EXE 文件:为什么运行时会出现 ImportError?
【发布时间】:2021-01-05 21:09:18
【问题描述】:

我将一个 python 文件转换为 exe 文件,但是当我打开它时它不起作用。这是错误回溯:

Traceback (most recent call last):
  File "C:\Users\Admin\AppData\Roaming\python\Python39\site-packages\test\test.py", line 1, in <module>
  File "C:\Users\Admin\AppData\Roaming\Python\Python39\site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
    exec(bytecode, module.__dict__)
  File "pynput\__init__.py", line 40, in <module>
.....
File "pynput\_util\__init__.py", line 76, in backend
ImportError
[16684] failed to execute script test

我不知道这是什么意思。如何阻止这种情况并让我的文件正常工作?

【问题讨论】:

  • 有一个“ImportError”,看起来你(或你正在导入的模块)正在尝试导入系统找不到的东西。查看此链接:stackoverflow.com/questions/63681770/…
  • 该追溯还有更多内容吗?你用什么来创建.exe?您可以发布导致此问题的代码的minimal reproducible example 吗?
  • 您是否在运行原始 python 脚本的同一台计算机上运行 exe?

标签: python pyinstaller


【解决方案1】:

pynput 的导入似乎是字节码。这使得pyinstaller 无法找到它:它是一个隐藏导入。文档有这样的说法:

当代码使用__import__时,可能会发生隐藏导入, imp.find_module()execeval。隐藏进口也可以 当扩展模块使用 Python/C API 进行导入时发生。 发生这种情况时,Analysis 无法检测到任何东西。将没有 警告,仅在运行时出现 ImportError。

要找到这些隐藏的导入,请使用 --debug=imports 构建应用 标记...并运行它。

一旦您知道需要哪些模块,您就可以将所需的模块添加到 使用 --hidden-import= 命令选项的包。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多