Python 将pkg.sub导入为其他.sub

Python 将pkg.sub导入为其他.sub,python,python-import,Python,Python Import,我没有这个问题,但当我在处理一个相关问题时,我想到了这个问题。让我们有: logging = 'something' # bad naming decision import logging as lg # using a different name 如何将logging.config导入为lg.config,而不覆盖原始的logging 经过一些测试,我发现: import logging.config as _ # any unused name 但这真的正确吗?有更好的解决方

我没有这个问题,但当我在处理一个相关问题时,我想到了这个问题。让我们有:

logging = 'something'  # bad naming decision
import logging as lg   # using a different name
如何将
logging.config
导入为
lg.config
,而不覆盖原始的
logging

经过一些测试,我发现:

import logging.config as _  # any unused name

但这真的正确吗?有更好的解决方案吗?

设置别名后,仍然需要使用完整路径导入,但仍然可以使用别名调用子模块:

import my_module as mm
import my_module.sub_module

mm.sub_module

像这样做怎么样

import logging as lg
from logging import config
在此之后,
config
lg.config
请参阅
logging.config

In [3]: config
Out[3]: <module 'logging.config' from 'C:\\Anaconda3\\lib\\logging\\config.py'>

In [4]: lg.config
Out[4]: <module 'logging.config' from 'C:\\Anaconda3\\lib\\logging\\config.py'>
[3]中的
:配置
出[3]:
在[4]中:lg.config
出[4]:

第二次导入将覆盖“我的模块”。问题是如何避免它。将
日志记录的值指定给临时变量,并在导入后重新分配它?在这种特殊情况下,您应该能够引用
lg.config
,而无需
import logging.config
语句,因为您已经为
logging
定义了
lg
的别名。我遗漏了什么吗?@PaWa
import logging
没有拉取
config
模块(至少在我的Python版本上)。OTOH
导入操作系统
还导入操作系统路径
。我认为这取决于实现,每个子模块都应该显式导入。@MaartenFabré是的,这将使代码可读性好,我的意思是优雅