【发布时间】:2014-04-23 01:27:06
【问题描述】:
我们最近将 pycrypto 添加到我们一直在处理的项目中,现在我无法在使用 pyinstaller 构建该软件后运行该软件。
我在 pyinstaller 中遇到了新软件包的问题,但我无法特别解决这个问题。
我在尝试运行构建的软件时遇到的错误如下(抱歉解释,构建需要相当长的时间)
一开始是这样的:
No package Crypto.Cipher
所以我将'Crypto' 添加到我的.spec 文件中的hiddenimports。然后我得到了,
No module named Cipher
所以我将'Crypto' 更改为'Crypto.Cipher' 然后我得到了,
Crypto.Cipher has no attribute AES
所以我将'Crypto.Cipher' 更改为'Crypto.Cipher.AES' 然后我得到了
File "C:\Folder\made\by\pyinstaller\Crypto.Cipher.AES", line 49 in <module>
ImportError: cannot import name blockalgo
所以我将'Crypto.Cipher.AES' 更改为'Crypto.Cipher.AES.blockalgo' 并且错误没有改变。
我尝试了几种不同的配置,但构建脚本的输出总是显示类似
ERROR: Hidden import 'blockalgo' not found.
有谁知道如何正确导入此文件,或者知道如何让 pycrypto 与 pyinstaller 配合使用?
【问题讨论】:
-
Pycrypto 是unmaintained and has known vulnerabilities。使用
pycryptodome,它是一个替代品。 -
我尝试安装 pycryptodome。因为缺少
OSError: Cannot load native module 'Crypto.Hash._MD5'而出错。我将它包含在 hiddenimports 中.. 它在构建中创建了一个Crypto.Hash._MD5.pyd文件,但仍然没有骰子.. 程序崩溃。而且看起来它在所有错误的地方寻找。 -
看到了一个使用 pycryptodomex 代替的记录:stackoverflow.com/a/48408950/4355695
标签: python pyinstaller pycrypto