【问题标题】:pyinstaller Hidden import not foundpyinstaller 找不到隐藏的导入
【发布时间】:2019-12-05 05:18:02
【问题描述】:

我正在使用 pyinstaller。在我的脚本中有:

import toml


config = toml.load('config.toml')

我编译了我的脚本:

pyinstaller main.py --onefile --clean --name myApp

但是当我运行它给我的可执行文件时:ModuleNotFoundError: No module named 'toml'

所以我尝试了这个:

pyinstaller main.py --hidden-import toml --onefile --clean --name myApp

现在 pyinstaller 说:ERROR: Hidden import 'toml' not found

【问题讨论】:

  • python 抱怨找不到toml 包。你确定你已经安装了吗?在运行 pyinstaller 之前尝试 pip install toml
  • 是的。它是通过 pipenv 安装的,我在 pipenv shell 中
  • @kkawabat 您的评论帮助我找到了它。谢谢

标签: python python-import pyinstaller toml


【解决方案1】:

找到了答案。如果您使用的是虚拟环境(如 Pipenv、pyenv、venv),则需要在该环境的上下文中运行 pyinstaller。所以...

pip install pyinstaller
python -m PyInstaller main.py ....

另外,正如 mosegui 所指出的,您应该将配置标志放在文件名之前:

pyinstaller --hidden-import toml --onefile --clean --name myApp main.py

虽然这是很久以前的事了,我不确定这对我来说是否真的是个问题。

这些天我使用Poetry,所以一旦我有了诗歌环境,我就只需要poetry shell 和/或poetry run pyinstaller ...。无论您何时使用poetry run <some cmd sequence>,它都会在当前虚拟环境的上下文中运行您的命令序列。我相信pipenv run 完成了类似的事情,但诗歌总是更适合我。

【讨论】:

  • 奇怪的是,在寻找我的脚本无法编译的原因 6 小时后,这是唯一的解决方案。这肯定应该有更多的赞成票。
  • 嘿,我遇到了同样的问题,我运行的命令是“pyinstaller --hidden-import tensorflow --onefile main.py”,但它仍然显示“找不到隐藏的导入 tensorflow!”
【解决方案2】:

我知道这是一个很晚的答案,但我会在这里留下一个观察,以防有人发现自己处于类似情况:

即使您安装了tomlpyinstaller 也不会找到隐藏的导入,因为您是在脚本名称之后而不是之前传递配置标志,因此该命令会一直执行到您的脚本名称并忽略其余部分.试试:

pyinstaller --hidden-import toml --onefile --clean --name myApp main.py

而不是你现在的:

pyinstaller main.py --hidden-import toml --onefile --clean --name myApp

【讨论】:

    猜你喜欢
    • 2023-03-13
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    相关资源
    最近更新 更多