python错误“AttributeError:'module'对象没有属性'sha1'”

时间:2014-03-02 20:40:28

标签: linux python-2.7 hashlib

我需要你的帮助,

如何纠正错误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

4 个答案:

答案 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

  1. 包含正在运行的脚本的目录
  2. 内置模块
  3. 包含输入脚本的目录(或未指定文件时的当前目录)
  4. PYTHONPATH环境变量(可能包含目录列表)
  5. 依赖于安装的默认路径
  6. 这意味着如果您执行包含语句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修复此问题。