Python导入类时省略基础文件夹冗余引用层级的配置问题咨询
问题原因
你当前需要两层my_project才能导入类,是因为你的Python包结构中,可导入的顶层包为内层的my_project文件夹,而MyProject类存放在该包下的同名子模块my_project.py中,默认需要先索引到子模块才能读取到类。
解决方案
方案1:最小改动(无需修改目录结构/setup.cfg)
直接修改内层my_project目录下的__init__.py文件,显式暴露你需要导出的类:
- 在
my_project/__init__.py中添加如下代码:
from .my_project import MyProject # 可选,规范import *的导出范围 __all__ = ["MyProject"]
修改完成后重新安装你的包,就可以直接用from my_project import MyProject导入类。
方案2:移除冗余层级
如果不想保留同名子模块文件,可以直接把my_project/my_project.py中的所有代码迁移到my_project/__init__.py中,删除多余的my_project.py文件即可,同样可以实现目标导入效果。
方案3:标准src布局修复(如果要使用src结构)
你之前改用src布局失败,大概率是没有配置正确的包查找路径,正确配置方式如下:
- 调整目录结构为:
my_project <-- 基础文件夹 | +-- src | +-- my_project <-- 源码包 | +-- __init__.py | +-- my_project.py <-- 包含类MyProject | +-- tests
- 修改
setup.cfg配置:
[options] packages = find: package_dir = = src [options.packages.find] where = src
- 按方案1修改
src/my_project/__init__.py的导出内容,重新安装包即可生效。
内容的提问来源于stack exchange,提问作者SerialBandicoot
相关产品推荐
相关产品推荐

