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

Python包安装后子模块handlers无法导入问题求助

问题出在两个核心点:目录结构不符合Python包规范,以及pyproject.toml缺少包发现配置,导致子模块没被正确识别。

1. 先修正目录结构

你当前的src目录下直接放了project.py和handlers子目录,这会让project被当成单个模块文件,而非能包含子模块的包。正确的src布局应该是在src下建一个和包名同名的project目录,把所有相关文件和子目录都塞进去:

project/
   src/
      project/
         handlers/
             __init__.py
             sqlserver.py # 包含SqlServerHandler类
         __init__.py
         project.py # 包含其他类
   pyproject.toml

2. 完善pyproject.toml配置

给pyproject.toml加一段配置,让setuptools自动从src目录里找所有包:

[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "project"
version = "1.0.0"
requires-python = ">=3.10.5"
authors = [{ name = "me" }]
dependencies = [
    "pyodbc"
]

# 新增:自动从src目录查找所有包
[tool.setuptools.find]
where = ["src"]

3. 重新安装包

先卸载旧版本,再重新安装:

pip uninstall project -y
pip install c:\path\to\project

测试导入

现在就能正常导入子模块了:

from project import SomeClass # 正常工作
from project.handlers.sqlserver import SqlServerHandler # 现在可以正确导入

简单说下原因:

  • 改完目录结构后,project才是标准的Python包,handlers作为它的子包存在,符合导入路径的逻辑。
  • tool.setuptools.find配置会让setuptools递归扫描src下所有带__init__.py的目录,确保所有子包都被打包并安装到site-packages里。

内容的提问来源于stack exchange,提问作者t3chb0t

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:54:53