以下是我的代码.
import http
h1 = http.client.HTTPConnection('www.bing.com')
Run Code Online (Sandbox Code Playgroud)
我认为没关系.但是python给我以下错误:
AttributeError:'module'对象没有属性'client'.
我想知道为什么以及如何解决它.谢谢.
首先,导入包不会自动导入其所有子模块.*
试试这个:
import http.client
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,那么你很可能在你的其他地方(很可能是当前目录)有一个名为的文件http.py或一个名为的目录.你可以很容易地检查:httpsys.path
import http
http.__file__
Run Code Online (Sandbox Code Playgroud)
这应该给某些目录看起来像/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.