在Python中,我如何执行以下
的等价物import http.client
但使用相对导入:
from . import http.client
import .http.client
对于当前包中的包http
?我想通过它的父名client
访问http.client
模块,因为如果我进行顶级导入,我将能够访问。
答案 0 :(得分:3)
我会在相应的PEP 0328寻找灵感。如果您在http.__init__.py,并且想要访问客户端:
from . import client
答案 1 :(得分:2)
我认为您正在寻找的是:
from ..http import client
答案 2 :(得分:1)
您需要导入它 来自。导入http
但是,此时您将不会加载http.client模块,并且您无法访问它:
>>> http.client
AttributeError: 'module' object has no attribute 'client'
有各种方法来解决这个问题。最简单的方法是在http/__init__.py
from . import client
你可以做的另一件事是
import types
http = types.ModuleType('http')
from .http import client
http.client = client
如果修改http/__init__.py
但是,由于我认为这是为了某些原因提供http.client的直接替换,我建议你这样做:
try:
from .http import client
except ImportError:
from http import client
然后一致地使用名称client。这绝对是最简单,最漂亮的解决方案
或者,如果您不想将客户端用作名称:
try:
from .http import client as http_client
except ImportError:
from http import client as http_client