迁移至pyproject.toml/setup.cfg后,pip安装whl仅生成dist_info未装包
问题原因与解决方法
核心问题
你的项目结构和setup.cfg配置不匹配,导致setuptools无法正确识别需要打包的顶级包,进而pip安装后实际模块文件未被部署到site-packages目录。
具体问题点
- 项目结构不符合标准src布局:当前
src目录下直接放置__init__.py和子模块,但setuptools期望的标准src布局是src/[包名]/(包名需与metadata中的our_name一致),而非直接将模块文件放在src根目录。 - setup.cfg缺少包发现配置:依赖setuptools自动发现功能时,src布局下必须明确指定包的查找路径,否则工具无法正确定位包位置。
解决步骤
1. 调整项目结构
将现有代码文件移动到src/our_name目录下,最终结构如下:
README.md requirements.txt src our_name __init__.py module_1 __init__.py foo.py module_2 __init__.py bar.py
2. 修改setup.cfg配置
在[options]段添加包查找和目录映射配置:
[metadata] name = our_name version = 0.1.1 author = me [options] install_requires = networkx >= 3.0 packages = find: package_dir = = src
3. 重新构建并安装
执行以下命令重新生成wheel包并安装:
python -m build pip install dist/our_name*.whl
验证
安装完成后,尝试导入模块确认是否正常:
import our_name from our_name import module_1
内容的提问来源于stack exchange,提问作者Nathan Kronenfeld
相关产品推荐
相关产品推荐

