python - 使用 Python 3.4.1 导入 http.client encouter 导入错误

标签 python python-3.x python-import

我是按照python在线文档(21.12.3)中的例子来练习的。当我尝试使用运行模块 (F5) 运行我的脚本时,我总是遇到导入错误。但是如果我直接在 IDLE 命令行中输入它们,python 不会提示。我不确定我做错了什么。

我使用的python版本是 Win32 上的 Python 3.4.1(v3.4.1:c0e311e010fc,2014 年 5 月 18 日,10:38:22)[MSC v.1600 32 位(英特尔)]

脚本是

import http.client

conn = http.client.HTTPConnection("192.168.1.2", 8080)
conn.request("GET", "/index.html")
r1 = conn.getresponse()
print(r1.status, r1.reason)
conn.close()

错误信息是

Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 2218, in _find_and_load_unlocked
AttributeError: 'module' object has no attribute '__path__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\User\Downloads\http.py", line 1, in <module>
    import http.client
  File "D:\User\Downloads\http.py", line 1, in <module>
    import http.client
ImportError: No module named 'http.client'; 'http' is not a package

最佳答案

您可能已经创建了一个 Python 脚本并在本地目录中将其命名为 http.py。这与 Python 3 的同名内置模块冲突并导致此错误。快速解决方案是将文件重命名为不太通用的名称,以避免与 Python 内置模块发生冲突。

但如果您坚持,可以通过使用 absolute imports 完全限定本地 python 模块名称来清除名称歧义。 :

from . import http

或更容易混淆:

from . import http as myhttp

from .http import something

在 Python 2 上,有必要使用 future 在导入模块的最顶部启用绝对导入 功能使用此功能前声明:

from __future__ import absolute_import

关于python - 使用 Python 3.4.1 导入 http.client encouter 导入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24880147/

相关文章:

python - 在无法访问相机的情况下删除鱼眼效果

javascript - 是否可以在用户离开时删除整个网页?

python - 列表理解在这里合适吗?

Python Pandas : Filter in dataframe matching a set of multiple items/conditions from another dataframe

python - Pip 升级失败,错误为 : Invalid requirement: '\xe2\x80\x93upgrade'

python - 模块未找到错误: No module named 'cStringIO' ·

python - 在 django 中为每种站点语言设置单独的子域

python - snappy/snappymodule.cc(31) : fatal error C1083: Cannot open include file: 'snappy-c.h' : No such file or directory

python - 如何重新加载使用 `from module import *` 导入的 python 模块

python - 记录导入模块所花费的时间