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

如何在setup.cfg中引用同级/上级目录的Python包作为项目依赖

之前使用..路径不生效有两个核心原因:

  1. pip默认开启构建隔离,会在随机临时目录中执行包构建流程,临时目录的上层不存在对应的ProjectA路径
  2. 仅配置单个包的package_dir未配合包扫描规则,setuptools不会主动去上层目录扫描所有可用包

以下是两种无需软链接、无需修改目录结构的可行方案:

方案1:将ProjectA作为依赖声明(推荐)

因为ProjectA本身自带setup.{cfg,py}是合法的Python包,你可以直接在ProjectB的setup.cfg中将其声明为本地路径依赖:

[options]
install_requires =
    ProjectA @ file://../ProjectA

执行pip install .时,pip会自动解析相对路径找到ProjectA目录,将其安装到当前虚拟环境的site-packages中,ProjectA下所有的包都会自动可用,不需要为每个包单独配置。
这种方式完全符合Python打包规范,不需要修改任何默认配置。

方案2:直接打包ProjectA的包到ProjectB中

如果你不想将ProjectA作为独立依赖安装,希望直接把ProjectA的代码和ProjectB一起打包进安装产物,可以按如下配置:

  1. 先在ProjectB目录下新建pyproject.toml声明构建后端(如果还没有的话):
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
  1. 修改setup.cfg配置,指定setuptools同时从上层ProjectA和当前目录扫描包:
[options]
packages = find:

[options.packages.find]
where =
    ../ProjectA
    .
  1. 安装时需要关闭pip的构建隔离,否则构建环境的临时目录无法访问上层的ProjectA路径:
pip install . --no-build-isolation

这种方式会把ProjectA下所有的包和ProjectB的包一起打包,安装后都会出现在site-packages目录中,注意如果两个项目下有同名包会出现冲突。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:54:03