You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 08:12:37