如何在Python中将自定义模块整体导入并指定别名?
解决Python相对导入并批量命名空间绑定的问题
正确实现方式
针对你的目录结构,要在config/__init__.py里把constants.py的内容绑定到const命名空间下,有两种可行方案:
方法1:规范的模块别名导入
这是最推荐的写法,直接将整个constants模块以别名const导入:
from . import constants as const
后续通过const.XXX即可访问constants.py中的所有变量、函数或类,比如constants.py里定义了TIMEOUT,就用const.TIMEOUT调用。
方法2:动态导入实现批量绑定(按需选择)
如果需要把constants里的所有非私有内容打包到const命名空间下(类似import *但集中到别名里),可以用动态导入的方式:
from importlib import import_module # 导入当前包下的constants模块 constants_mod = import_module('.constants', package=__name__) # 将模块内的非私有属性存入const字典 const = {k: v for k, v in constants_mod.__dict__.items() if not k.startswith('_')} # 若想让const具备模块属性(而非字典),可替换为: # const = constants_mod
这种方式灵活性强,但可读性不如方法1,日常开发优先选择方法1。
原有写法无效的原因
import .constants as const:Python相对导入不支持该语法,相对导入必须使用from . import ...的格式。from .constants import * as const:import *语法不允许直接绑定别名,属于语法错误,因此无法执行。
内容的提问来源于stack exchange,提问作者Jethro Cao
相关产品推荐
相关产品推荐

