Python多子包项目无法导入subpackage2的配置问题求助
我来帮你解决这个问题,核心问题出在你的setup.py配置和目录结构的小缺失上,咱们一步步调整:
1. 修正setup.py的根包名称
你的setup.py里把name设成了subpackage1,这会让setuptools错误地将subpackage1识别为顶级包,自然无法通过package这个顶级名导入其他子包。你需要把name改成根目录的包名package:
from setuptools import setup, find_packages setup( name='package', # 这里改为根包名 version='1.0', install_requires=['numpy', 'scipy'], packages=find_packages(), )
2. 给根目录添加__init__.py
你的/package目录下缺少__init__.py文件,setuptools默认只会把包含__init__.py的目录识别为Python包。新建一个空的__init__.py放在根目录,这样package才会被视为顶级包。
调整后的完整目录结构:
/package setup.py __init__.py # 新增空文件 /subpackage1 subpackage1.py __init__.py /subpackage2 subpackage2.py __init__.py /utils some_other_files_and_codes __init__.py
3. 重新安装包
先卸载之前错误的安装:
pip uninstall subpackage1
然后回到/package目录下重新执行开发模式安装:
pip install -e .
4. 验证导入
现在你就能用想要的方式正常导入子包了:
from package import subpackage1 from package import subpackage2 import package.utils # utils子包也能正常导入
这样的配置既满足了你的导入需求,又能避免这个项目里的subpackage1/subpackage2和系统中独立存在的同名包冲突,完美匹配你的使用场景。
内容的提问来源于stack exchange,提问作者Neurobro
相关产品推荐
相关产品推荐

