Python - 如何使用模块别名导入其子模块?
我有一个很长的模块名称,不想在文档中反复输入。于是我可以用 import long_ass_module_name as lamn
这样来简化,之后就可以用这个简短的名字来调用它。不过,这个模块里面还有很多子模块,我也想导入并使用。
在这种情况下,我不能写 import lamn.sub_module_1
,因为 Python 的导入功能不认识我给长模块名起的这个别名。那我该怎么做呢?
我是不是应该在主模块的 __init__.py
文件里自动导入所有的子模块呢?
2 个回答
1
这种(非常不推荐的)将一个对象的所有成员导入到当前命名空间的方法,是通过查找 vars()
字典来实现的:
import my_bad_ass_long_module.bafd as b
# get __dict__ of current namespace
myn = vars()
for k,v in vars(b).items():
# populate this namespace with the all the members of the b namespace (overwriting!)
myn[k] = v
11
当你导入子模块时,别名对象仍然会发生变化。
import my_long_module_name as mlmn
import my_long_module_name.submodule
mlmn.submodule.function()
import
语句总是需要写出模块的完整名称。模块其实就是一个对象,导入子模块时,会给这个对象添加一个新的属性。