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

如何用pyproject.toml将两个包安装到calculator命名空间?

解决calculator命名空间包导入错误的方案

问题根源

你的配置存在两个核心问题:

  1. pyproject.toml中包搜索路径指向错误,未正确指向存放源码的src目录
  2. 顶级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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:55:19