[英]pyinstaller Hidden import not found
我正在使用 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
找到了答案。 如果您使用的是虚拟环境(如 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 环境,我就只需要poetry run pyinstaller ...
poetry shell
和/或poetry run pyinstaller ...
。 每当您使用poetry run <some cmd sequence>
它都会在当前虚拟环境的上下文中运行您的任何命令序列。 我相信pipenv run
完成了类似的事情,但 Poetry 对我来说总是更好。
我知道这是一个非常迟到的答案,但我会在这里留下一个观察,以防有人发现自己处于类似情况:
即使您安装了toml
, pyinstaller
也不会找到隐藏的导入,因为您在脚本名称之后而不是之前传递配置标志,因此该命令会一直执行到您的脚本名称并忽略其余部分。 尝试:
pyinstaller --hidden-import toml --onefile --clean --name myApp main.py
而不是你当前的:
pyinstaller main.py --hidden-import toml --onefile --clean --name myApp
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.