如何缩短自定义Python包library的导入路径?
实现缩短Python包导入路径的方法
要将import library.src.pkg1 as pkg1简化为import library.pkg1,可以通过以下两种规范方式实现:
方法一:修改pyproject.toml配置(无需移动文件)
适合不想调整现有文件结构的场景,通过setuptools的包映射配置实现路径简化:
- 确保
library目录下存在空的__init__.py文件(没有则新建),根目录的__init__.py可删除,它不属于包结构的一部分。 - 修改
pyproject.toml文件,在原有内容基础上添加配置:[project] # 保留原有的name、version、dependencies配置,新增以下内容 packages = ["library", "library.pkg1", "library.pkg2"] package-dir = { "library" = "library/src" } # 或者用自动查找包的配置(更便捷),替代上面的packages和package-dir [tool.setuptools] packages = { find = { where = ["library/src"] } } package-dir = { "library" = "library/src" } - 重新安装包(开发模式用
pip install -e .,或正常构建安装),之后即可用import library.pkg1导入模块。
方法二:调整目录结构(最直观)
直接将子模块移到library根目录下,让pkg1成为library的直接子模块:
- 调整后的目录结构如下:
- library * __init__.py * pkg1.py * pkg2.py - pyproject.toml - 无需修改
pyproject.toml,重新安装包后,就能直接用import library.pkg1导入模块。
注意:不推荐通过在library/__init__.py中手动导入并映射模块的方式实现,这种做法不符合Python包规范,易引发模块引用混乱。
内容的提问来源于stack exchange,提问作者tbickford
相关产品推荐
相关产品推荐

