我有一个很长的模块名称,我想避免在我的文档中多次输入它。我可以简单地做import long_ass_module_name as lamn
并以这种方式调用它。但是,此模块有许多子模块,我希望导入和使用它们。
在这种情况下,我将无法编写import lamn.sub_module_1
,因为python导入无法识别我为long_ass_module_name创建的别名。我怎样才能做到这一点?
我应该只是自动导入主模块__init__.py
中的所有子模块吗?
答案 0 :(得分:11)
导入子模块时,别名对象仍会更改
import my_long_module_name as mlmn
import my_long_module_name.submodule
mlmn.submodule.function()
import
语句始终采用模块的全名。该模块只是一个对象,导入子模块将为该对象添加一个属性。
答案 1 :(得分: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