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

tia*_*549 7 python http

以下是我的代码.

import http
h1 = http.client.HTTPConnection('www.bing.com')
Run Code Online (Sandbox Code Playgroud)

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

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

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

aba*_*ert 6

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

试试这个:

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.pathimport http.client.