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

如何在一个项目中创建两个本地Python可安装包?

实现api和models作为可安装包的方案

能不能实现?

完全可以。不管是把api和models作为同一项目的子包,还是做成独立的可安装分发包,都能满足你在tests目录中导入测试的需求。

能否共用现有配置文件?

当然可以共用pyproject.toml和setup.cfg,不需要为每个包单独配置版本,下面是两种实用的配置方式:

方式1:将api和models作为同一项目的子包

这是最简便的方案,把两个包归到同一个顶层项目名下:

  1. 调整目录结构,在src下新增顶层项目目录(比如命名为myproject),把api和models移入其中:
src
  myproject
    __init__.py
    api
      __init__.py
      class1.py
      py.typed
    models
      __init__.py
      class2.py
      py.typed
  1. 修改setup.cfg的包配置,让工具自动发现子包:
[options]
packages = find:
package_dir =
    = src

或者显式列出要包含的子包:

[options]
packages =
    myproject.api
    myproject.models
package_dir =
    = src

配置完成后,测试代码里就能通过from myproject.api import class1和from myproject.models import class2直接导入。

方式2:将api和models作为独立可安装包

如果希望两个包能单独发布或安装,也可以在同一配置文件中实现:
在setup.cfg里指定每个包的目录映射:

[options]
packages = find:
package_dir =
    api = src/api
    models = src/models

[options.packages.find]
where = src

你还可以通过定义extras_require来支持单独安装某个包,比如在setup.cfg中添加:

[options.extras_require]
api =
models =

这样就能用pip install .[api]单独安装api包,pip install .则安装全部两个包。

版本管理

不需要为每个包单独配置版本,建议在pyproject.toml或setup.cfg中统一设置项目版本,比如在setup.cfg里:

[metadata]
name = myproject
version = 0.1.0

如果确实需要给两个独立包设置不同版本,也可以在配置文件中分别指定,但同一项目下用统一版本会更易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 01:35:18