如何用pyproject.toml将两个包安装到calculator命名空间?
解决calculator命名空间包导入错误的方案
问题根源
你的配置存在两个核心问题:
pyproject.toml中包搜索路径指向错误,未正确指向存放源码的src目录- 顶级
calculator命名空间目录缺少必要的初始化文件,导致Python无法识别其为共享命名空间
修正步骤
1. 调整包目录结构
在两个包的src/calculator/目录下添加__init__.py文件,内容如下(用于声明共享命名空间):
# src/calculator/__init__.py __import__('pkg_resources').declare_namespace(__name__)
2. 修改pyproject.toml配置
分别更新两个包的配置文件,修正包搜索路径并优化命名:
adder包的pyproject.toml
[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] name = "calculator-adder" version = "0.1" [tool.setuptools.packages.find] where = ["src"] # 指向源码所在的src目录 include = ["calculator*"]# 匹配calculator及其所有子包 namespaces = true # 启用命名空间合并
divider包的pyproject.toml
[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] name = "calculator-divider" version = "0.2" [tool.setuptools.packages.find] where = ["src"] include = ["calculator*"] namespaces = true
3. 重新安装包
先卸载旧版本,再重新执行开发安装:
# 卸载原有包 pip uninstall -y adder divider # 进入calculator-add目录执行 pip install -e . # 进入calculator-divide目录执行 pip install -e .
4. 验证导入
创建测试脚本test_calculator.py:
import calculator from calculator.adder import add from calculator.divider import divide print(add(2, 3)) print(divide(6, 2))
运行脚本,若输出5和3则说明配置成功。
内容的提问来源于stack exchange,提问作者wigging
相关产品推荐
相关产品推荐

