pip安装的PyPI包sqlcontroller导入报ModuleNotFoundError问题求助
问题根因
你的PyPI包存在打包配置错误,安装后未在site-packages目录下生成名为sqlcontroller的顶层模块,而是直接将项目根目录下的src、tests文件夹原样安装到了site-packages路径下,因此Python无法识别到sqlcontroller模块。你可以在当前环境执行import src.sqlcontroller验证,若可正常导入即可确认该根因。
修复方案
永久修复(推荐)
调整sqlcontroller项目的打包配置:
- 如果你使用
pyproject.toml作为打包配置文件,添加如下配置:
[tool.setuptools] package-dir = {"" = "src"} [tool.setuptools.packages.find] where = ["src"] # 可添加排除项过滤不需要打包的目录 exclude = ["tests*"]
- 如果你使用
setup.py或setup.cfg,对应添加package_dir和包查找配置,指定src为源码根目录即可。
配置修改完成后,按以下步骤验证后再上传新版本:
- 安装打包工具:
pip install build - 执行本地打包:
python -m build - 安装本地生成的wheel包:
pip install dist/<生成的wheel包文件名>.whl - 测试
import sqlcontroller正常后,再上传新版本到PyPI即可。
临时解决方法
如果不需要更新PyPI包,可临时修改导入语句为:
from src.sqlcontroller import SqlController
该方法仅作临时验证使用,不推荐在生产环境引入。
内容的提问来源于stack exchange,提问作者RedKnight91
相关产品推荐
相关产品推荐

