Python - 如何使用模块别名导入其子模块?

8 投票
2 回答
3314 浏览
提问于 2025-04-17 12:16

我有一个很长的模块名称,不想在文档中反复输入。于是我可以用 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 语句总是需要写出模块的完整名称。模块其实就是一个对象,导入子模块时,会给这个对象添加一个新的属性。

撰写回答