以下是我的代码。
import http
h1 = http.client.HTTPConnection('www.bing.com')
我认为没问题。但是 python 给了我以下错误:
AttributeError:“模块”对象没有属性“客户端”。
我想知道为什么以及如何解决它。谢谢。
首先,导入包不会自动导入其所有子模块。*
所以试试这个:
import http.client
如果这不起作用,那么很可能您有一个名为http.py
,或名为的目录http
,在你的其他地方sys.path
(很可能是当前目录)。你可以很容易地检查一下:
import http
http.__file__
那应该给出一些目录,例如/usr/lib/python3.3/http/__init__.py
or /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/http/__init__.py
或者其他看起来明显是 system-y 和 stdlib-y 的东西;如果你得到/home/me/src/myproject/http.py
, 这是你的问题。通过重命名模块来修复它,使其与您要使用的 stdlib 模块不具有相同的名称。
如果这不是问题,那么您可能有一个损坏的 Python 安装,或者两个互相混淆的 Python 安装。最常见的原因是安装第二个 Python 编辑了你的PYTHONPATH
环境变量,但你的第一个 Python 仍然是你键入时运行的那个python
.
* But sometimes it does. It depends on the module. And sometimes you can't tell whether something is a package with non-module members (like http
), or a module with submodules (os
). Fortunately, it doesn't matter; it's always save to import os.path
or import http.client
, whether it's necessary or not.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)