找不到 pyinstaller 隐藏导入
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 shell
and/or poetry run pyinstaller ...
。任何时候你使用 poetry run <some cmd sequence>
它 运行s 无论你的命令序列在当前虚拟环境的上下文中是什么。我相信 pipenv run
完成了类似的事情,但诗歌对我来说总是更好。
我知道这是一个迟来的回答,但我会在这里留下观察结果,以防有人发现 himself/herself 处于类似情况:
即使您安装了 toml
,pyinstaller
也不会找到隐藏的导入,因为您是在脚本名称之后而不是之前传递配置标志,所以命令会执行到您的脚本名称并忽略其余部分。尝试:
pyinstaller --hidden-import toml --onefile --clean --name myApp main.py
而不是你现在的:
pyinstaller main.py --hidden-import toml --onefile --clean --name myApp
我正在使用 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 shell
and/or poetry run pyinstaller ...
。任何时候你使用 poetry run <some cmd sequence>
它 运行s 无论你的命令序列在当前虚拟环境的上下文中是什么。我相信 pipenv run
完成了类似的事情,但诗歌对我来说总是更好。
我知道这是一个迟来的回答,但我会在这里留下观察结果,以防有人发现 himself/herself 处于类似情况:
即使您安装了 toml
,pyinstaller
也不会找到隐藏的导入,因为您是在脚本名称之后而不是之前传递配置标志,所以命令会执行到您的脚本名称并忽略其余部分。尝试:
pyinstaller --hidden-import toml --onefile --clean --name myApp main.py
而不是你现在的:
pyinstaller main.py --hidden-import toml --onefile --clean --name myApp