Python如何实现直接通过包名访问子模块(无需预导入)
解决Python包子模块直接访问问题
当执行import raycekar as rk时,Python只会加载包根目录的__init__.py,不会自动导入子模块,因此直接访问rk.ui或rk.env会触发AttributeError——只有提前执行过from raycekar import ui这类语句,子模块才会被加载到包的命名空间中。
要实现无需预导入就能直接通过rk.ui/rk.env访问子模块,只需修改raycekar/__init__.py文件,将子模块显式导入并绑定到包的命名空间:
# raycekar/__init__.py from . import ui from . import env
修改完成后,在main.py中执行import raycekar as rk,就可以直接调用rk.ui和rk.env的功能,无需额外提前导入子模块。
这种方式完全兼容Python 3.8+版本,既保留了子模块的结构层次,又能让用户以简洁的方式访问包内功能。
内容的提问来源于stack exchange,提问作者AwesomeCronk
相关产品推荐
相关产品推荐

