【发布时间】:2021-12-05 12:19:58
【问题描述】:
我想将我的 Python 脚本变成一个可执行文件,其中包含所有依赖项。为此,我使用pyinstaller。我已经在我的机器上全局安装了它,并为我的项目设置了一个 virtualenv。当 virtualenv 处于活动状态时,我正在执行以下命令:
pyinstaller --onefile --paths /path/to/venv/lib/python3.9/site-packages script.py
这会创建一个可执行文件,但是当我尝试运行它时,它给了我:
ModuleNotFoundError: No module named 'Crypto.Util.Padding'
在警告文件中它给了我以下行:
missing module named 'Crypto.Util.Padding' - imported by sp_api.base.helpers (top-level)
在生成可执行文件期间,输出包括:
6427 INFO: Loading module hook 'hook-Crypto.py' from '/home/user/.local/lib/python3.9/site-packages/_pyinstaller_hooks_contrib/hooks/stdhooks'...
Traceback (most recent call last):
File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'Crypto.Math'
执行命令时
pyinstaller --onefile myscript.py
在 windows 下,即使不指定 venv 路径,它也能正常工作。在 linux 中执行相同步骤时,可执行文件会因第一次非标准导入(本例中为烧瓶)而失败。
【问题讨论】:
-
您可能需要将这些导入添加到
.spec文件中。 -
@BoarGules “那些”是什么意思?我尝试添加
--hidden-import Crypto.Util.Padding但这并没有改变任何东西
标签: python pyinstaller modulenotfounderror