如何修复错误" AttributeError:' module'对象没有属性'客户端'在python3?

时间:2014-08-13 05:23:41

标签: python http

以下是我的代码。

import http
h1 = http.client.HTTPConnection('www.bing.com')

我认为没关系。但是python给了我以下错误:

  

AttributeError:' module'对象没有属性' client'。

我想知道为什么以及如何解决它。谢谢。

1 个答案:

答案 0 :(得分:6)

首先,导入包不会自动导入其所有子模块。*

所以试试这个:

import http.client

如果这不起作用,那么很可能你的http.py上有一个名为http的文件或名为sys.path的目录(很可能是当前的)目录)。你可以很容易地检查:

import http
http.__file__

那应该给出一些目录,比如/usr/lib/python3.3/http/__init__.py/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/http/__init__.py或其他看起来很明显的系统-y和stdlib-y;如果你改为/home/me/src/myproject/http.py,这就是你的问题。通过重命名模块来修复它,使其与您要使用的stdlib模块名称不同。


如果这不是问题,那么您可能会破坏Python安装,或者两个互相混淆的Python安装。最常见的原因是安装第二个Python编辑了您的PYTHONPATH环境变量,但是当您输入python时,您的第一个Python仍然是运行的。


*但有时确实如此。这取决于模块。有时您无法判断某些内容是否包含非模块成员(如http)或带有子模块的模块(os)。幸运的是,没关系;它始终保存到import os.pathimport http.client,无论是否有必要。