嵌套导入错误

时间:2012-02-20 12:27:09

标签: python pycrypto python-2.4 amazon-product-api hashlib

正在运行python version 2.4.3。我正在使用python-amazon-product-api。但是在api.py中,以下代码行导致了问题:

if sys.version_info[:2] > (2, 4): # pragma: no cover
    from urllib2 import quote
    from hashlib import sha256 # pylint: disable-msg=E0611
else:
    from urllib import quote
    from Crypto.Hash import SHA256 as sha256

由于我的版本是2.4.3,因此我会转到else并尝试导入Crypto。所以我下载了但是我在SHA256.py cannot import _SHA256中输入了导入错误。库中没有_SHA256.py。在我不成功的努力之后,我退出使用pyCrypto,我尝试使用standalone hashlib library。所以我修改了else中的api.py部分:

else:
    from hashlib import hashlib
    sha256 = hashlib.sha256()

然后在导入hashlib时又出现了这个导入错误。

File "C:\Python24\lib\site-packages\hashlib.py", line 63, in __get_builtin_constructor
    import _md5
ImportError: DLL load failed: The specified module could not be found.

昨天我posted similar question但是无法找到确切的解决方案,这就是我再次发布此消息的原因。我迫切需要一个解决方案:(

1 个答案:

答案 0 :(得分:0)

基于你上面所说的几个问题。

1)你为什么使用古老版本的Python?安装Python 2.7并且更快乐!

2)假设你因为某些未知原因而被困在2.4中......似乎Python无法找到你安装的hashlib包附带的任何二进制扩展模块(.pyd)文件。你编译自己的hashlib还是安装了二进制版本? 如果是这样,请确保将_hashlib.pyd文件放在PYTHONPATH或sys.path中的某个位置。

由于我缺乏构建和测试它的能力,我几年前没有为http://code.krypto.org/python/hashlib上的hashlib预编译二进制文件安装Windows安装程序...而且Python 2.4太老了以至于我假设任何人都使用在他们的系统上安装二进制文件的能力只需安装一个现代版本的Python本身。