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

我需要你的帮助,

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

  1. 包含正在运行的脚本的目录
  2. 内置模块
  3. 包含输入脚本的目录(或没有指定文件时的当前目录)
  4. PYTHONPATH环境变量(可能包含一个目录列表)
  5. 依赖于安装的默认路径

这意味着如果您执行包含语句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修复了这个问题。