【问题标题】:python - AttributeError: 'module' object has no attributepython - AttributeError:“模块”对象没有属性
【发布时间】:2013-07-05 20:59:28
【问题描述】:

我正在尝试这个简单的代码:

import requests
print requests.__file__
r = requests.get('https://github.com/timeline.json')

当我逐行键入行时,它在命令行上完美运行,但当我将其作为脚本或在 Sublime Text 2 中执行时,它就不行了。这是堆栈跟踪:

C:\Python27\lib\site-packages\requests\__init__.pyc
Traceback (most recent call last):
  File "C:\Users\Bruce\Desktop\http.py", line 1, in <module>
    import requests
  File "C:\Python27\lib\site-packages\requests\__init__.py", line 53, in <module>
    from requests.packages.urllib3.contrib import pyopenssl
  File "C:\Python27\lib\site-packages\requests\packages\__init__.py", line 3, in <module>
    from . import urllib3
  File "C:\Python27\lib\site-packages\requests\packages\urllib3\__init__.py", line 16, in <module>
    from .connectionpool import (
  File "C:\Python27\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 15, in <module>
    from http.client import HTTPConnection, HTTPException
  File "C:\Users\Bruce\Desktop\http.py", line 3, in <module>
    r = requests.get('https://github.com/timeline.json')
AttributeError: 'module' object has no attribute 'get'
[Finished in 0.2s with exit code 1]

'Module object has no attribute 'get' Python error Requests? 上的回答没有多大帮助。

这可能是我的 ST2 Python 构建系统中的一些错误吗?我尝试使用pip 删除所有requests 模块,以防有多个模块并重新安装它们。

【问题讨论】:

  • Desktop 文件夹中有requests.py 文件吗?
  • @AshwiniChaudhary 没有!
  • 请您仔细检查并执行print requests.__file__...
  • @Bruce 好的 - 然后是 print dir(requests)?
  • @JonClements 如果脚本在import requests 之后只有一行print dir(requests),我将得到两个数组作为输出——一个具有所有属性都带有下划线,另一个具有get方法。我猜脚本运行了两次? pastebin.com/WcBa7Qr5

标签: python python-requests attributeerror


【解决方案1】:

编辑 再次阅读堆栈跟踪后,您可以看到urllib3 尝试从http 模块导入一些内容。您的文件名为http.py,因此被导入而不是预期的。

实际错误是由于导入的循环性质而发生的。由于requests 尚未完全导入。当http 导入再次到达import requests 时,requests 中的get 函数尚未定义。

注意:您还需要始终使用if __name__ == '__main__' 构造来保护您的入口点。对于毫无戒心的未来开发人员(包括您自己)来说,这通常会避免令人讨厌的错误。

【讨论】:

  • @Bruce 对不起,我已经很接近了。我刚刚注意到urllib3 做了一个from http.client import HTTPConnection, HTTPException。看来您的 http.py 文件正在遮蔽它?尝试重命名它。
  • 顺便说一句,我的观点仍然成立。时刻守护你的切入点!
  • 是的!就是这样!感谢您的建议。
  • 我的错误是'module' object has no attribute 'post',我的文件名是email.py。重命名文件修复它!谢谢!
猜你喜欢
  • 2015-03-09
  • 2011-10-25
  • 2017-09-02
  • 2014-07-24
  • 2015-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多