实际上,_sha 模块由 shamodule.c 提供,_md5 由 md5module.c 和 md5.c 提供,并且只有在默认情况下未使用 OpenSSL 编译 Python 时才会构建两者。
您可以setup.py
在 Python Source tarball 中找到详细信息。
if COMPILED_WITH_PYDEBUG or not have_usable_openssl:
# The _sha module implements the SHA1 hash algorithm.
exts.append( Extension('_sha', ['shamodule.c']) )
# The _md5 module implements the RSA Data Security, Inc. MD5
# Message-Digest Algorithm, described in RFC 1321. The
# necessary files md5.c and md5.h are included here.
exts.append( Extension('_md5',
sources = ['md5module.c', 'md5.c'],
depends = ['md5.h']) )
大多数情况下,您的 Python 是使用 Openssl 库构建的,在这种情况下,这些函数由 OpenSSL 库本身提供。
现在,如果您想要单独使用它们,那么您可以在没有 OpenSSL 的情况下构建您的 Python,或者更好的是,您可以使用 pydebug 选项构建并拥有它们。
从您的 Python 源代码压缩包中:
./configure --with-pydebug
make
你去吧:
>>> import _sha
[38571 refs]
>>> _sha.__file__
'/home/senthil/python/release27-maint/build/lib.linux-i686-2.7-pydebug/_sha.so'
[38573 refs]