以下是我的代码。
import http
h1 = http.client.HTTPConnection('www.bing.com')
我认为没关系。但是python给了我以下错误:
AttributeError:' module'对象没有属性' client'。
我想知道为什么以及如何解决它。谢谢。
答案 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.path
或import http.client
,无论是否有必要。