我需要你的帮助,
如何纠正错误AttributeError:'模块'对象没有属性'sha1',
当我启动命令示例导入随机或导入hashlib我得到这样的结果
root@thinkad:~# python Python 2.7.3 (default, Jan 2 2013, 13:56:14) [GCC 4.7.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import random Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.7/random.py", line 49, in <module> import hashlib as _hashlib File "hashlib.py", line 3, in <module> hasher = hashlib.sha1() AttributeError: 'module' object has no attribute 'sha1' >>> import math >>> import hashlib Traceback (most recent call last): File "<stdin>", line 1, in <module> File "hashlib.py", line 3, in <module> hasher = hashlib.sha1() AttributeError: 'module' object has no attribute 'sha1' >>>
帮助请提前。thakns
看起来你有一个名为hashlib.py
的文件,它可以解释器找到标准的hashlib
模块。
当您从与执行脚本相同的目录 (或者即使是正在运行的脚本)中获取与内置模块相同的文件时 ,它将被加载而不是内置模块。
为了解决这个问题,你只需要将你的文件hashlib.py
重命名为其他东西,然后Python解释器将加载内置模块。 您可能还需要删除位于与hashlib.py
相同的目录中的已编译模块hashlib.py
,否则Python将加载该模块。
在import
模块时,假设import hashlib
,Python hashlib.py
在以下位置按以下顺序查找模块hashlib.py
:
PYTHONPATH
环境变量(可能包含一个目录列表) 这意味着如果您执行包含语句import hashlib
的脚本import hashlib
,则Python会导入脚本本身,而不是内置模块hashlib
。 实际上,Python hashlib.pyc
脚本编译到同一目录下的hashlib.pyc
文件中,并导入编译后的脚本,所以如果您只是重命名hashlib.py
并将hashlib.py
保留在原来的位置,它仍然会加载它。 所以你也需要删除haslib.pyc
。
我更新了一个新的Python版本的包后,在anaconda环境中出现了同样的错误。 在我的情况下,一个conda remove python
后跟一个conda install python=2.7
修复了这个问题。