【问题标题】:Crypto Module not Found for pyinstaller找不到 pyinstaller 的加密模块
【发布时间】: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


【解决方案1】:

在从相应的venv添加lib64的路径后,找到Crypto库。

pyinstaller --onefile --paths /path/to/venv/lib/python3.9/site-packages \
   --paths /path/to/venv/lib64/python3.9/site-packagesscript.py

【讨论】:

    猜你喜欢
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 2013-02-13
    • 2020-11-26
    • 2021-01-02
    • 2023-01-05
    相关资源
    最近更新 更多