如何修复 AttributeError:部分初始化的模块?

Kar*_*ary 23 python python-3.x

我正在尝试运行我的脚本,但不断收到此错误:

File ".\checkmypass.py", line 1, in <module>
  import requests 
line 3, in <module>
  response = requests.get(url) 
AttributeError: partially initialized module 'requests' has no attribute 'get' (most likely due to a circular import)
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

小智 70

当存在与导入模块同名的本地文件时,就会发生这种情况——python 看到本地文件并认为它是模块。

就我而言,我在同一个文件夹中创建了一个名为requests.py. 所以我的代码实际上是导入该文件,不是requests您使用 pip 安装的实际模块。然后我创建了一个名为logging.py. 我重命名了这两个文件,问题解决了。

  • 节省了我大量的时间。当然,有一个名为“decimal.py”的文件,在我正在做的课程中,我们也以这种方式命名文件。因此,循环导入。 (4认同)
  • 我的脚本的名称为“barcode.py”,将其重命名为“test_barcode.py”后,错误消失了。谢谢。 (3认同)

小智 35

确保文件的名称与您要导入的模块的名称不同——这将使 Python 认为存在循环依赖。

还要检查 URL 和您正在使用的包。“最有可能是由于循环导入”是指一个文件(模块)依赖于其他东西并且在它已经被导入时试图被导入。一旦正确,你应该有这样的东西:

import requests

r = requests.get("http://google.com")       
print(r.status_code)

# 200
Run Code Online (Sandbox Code Playgroud)

  • 我使用了您上面给出的代码,但我遇到了同样的错误,您能更详细地解释一下吗?提前谢谢您。 (2认同)
  • 您有一个与导入的模块同名的本地文件,因此它尝试递归导入自身。只需重命名该文件即可。 (2认同)
  • 当您已经声明要加载到模块的 \_\_init\_\_.py' 文件中的 \_\_all\_\_ 数组中的文件列表时,可能会发生这种情况。模块名称已被使用,因此 Python 返回错误 (2认同)