我需要你的帮助,
如何纠正错误AttributeError:'module'对象没有属性'sha1',
当我启动命令示例import random或import 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'
>>>
帮助pls ..提前thakns
答案 0 :(得分:5)
在安装了一些酿造桶之后出现了问题,并且此后进行了一些定期清理。然后,node-gyp无法为我的节点应用程序重建一些软件包。重新安装python对我有帮助。
在macOS上:
brew reinstall python2
答案 1 :(得分:2)
当您执行脚本的一个文件位于同一目录时(或者即使它自己运行的脚本)命名与内置的相同在模块中,它已加载而不是内置模块。
要修复它,您只需将文件hashlib.py
重命名为其他内容,然后Python解释器将加载内置模块。您可能还需要删除与hashlib.pyc
位于同一目录中的已编译模块hashlib.py
,否则Python仍将加载该模块。
当你import
一个模块时,让我们说import hashlib
,Python会在following locations and in the following order中查找模块hashlib.py
:
PYTHONPATH
环境变量(可能包含目录列表)这意味着如果您执行包含语句hashlib.py
的脚本import hashlib
,Python将导入脚本本身而不是内置模块hashlib
。事实上,Python将您的脚本编译到同一目录中的文件hashlib.pyc
并导入该编译脚本,因此如果您只是重命名hashlib.py
并将haslib.pyc
保留在原来的位置,它将仍然是加载它。因此,您还需要删除haslib.pyc
。
答案 2 :(得分:1)
看起来您有一个名为hashlib.py
的文件阻碍了解释程序找到标准hashlib
模块。
答案 3 :(得分:0)
在更新了一个新的python版本的软件包之后,我在anaconda环境中遇到了同样的错误。在我的情况下,conda remove python
后跟conda install python=2.7
修复此问题。