1

我编写了一个使用 cxFreeze 的程序,但是如果我尝试使用 cxFreeze 编译它,我会收到错误消息:

缺少模块:?从 hashlib 导入的 _md5 ?_sha1 从 hashlib 导入?_sha256 从 hashlib 导入?_sha512 从 hashlib 导入

在我看来,cxFreeze 与 hashlib 模块不兼容,因为该错误很容易重现。你只需要导入 hashlib 并尝试编译它。

示例:cx_test.py:

import hashlib

setup.py(用于 cxFreeze):

import sys
from cx_Freeze import setup, Executable
buildOptions = dict(
        compressed = True,
        path = sys.path)
setup(
    name = "Hashlibtest",
    options =   dict(build_exe = buildOptions),
    includes = ["hashlib"],       
    executables = [Executable("cx_test.py")]
    )

有什么想法可以解决这个问题吗?

我在 Ubuntu 12.04 下使用 Python3.2

4

1 回答 1

-1

这不是问题 - 如果您查看 hashdist 的源代码,它使用不同的模块,具体取决于 Python 是否使用 OpenSSL 编译。其他模块可能会在 Windows 上导入一个东西,在 Linux 上导入另一个,或者一个用于 Python 2,另一个用于 Python 3。

在所有这些情况下,cx_Freeze 都会查看所有import x语句,并查找所有模块。如果它找不到,它会给你那个信息。但是它仍然会生成一个程序,并且通常仍然可以工作,除非有其他问题。

我以前看过 hashlib 的这些消息,结果程序运行得很好。

于 2012-12-22T12:26:48.087 回答