如何在同一个 monorepo 中的 Python 项目之间共享开发依赖项?

Posted

技术标签:

【中文标题】如何在同一个 monorepo 中的 Python 项目之间共享开发依赖项?【英文标题】:how to share dev-dependencies between Python projects within the same monorepo? 【发布时间】:2021-08-05 03:34:02 【问题描述】:

我有两个这样的monorepos:

.
├── monorepo1/
│   ├── apps/
│   │   ├── app1/
│   │   └── app2/
│   └── libs/
│       ├── lib1/
│       └── lib2/
└── monorepo2/
    ├── apps/
    │   ├── app3/
    │   └── app4/
    └── libs/
        ├── lib3/
        └── lib4/

每个monorepo 都包含appslibs,其中包含python 包。

我想为同一个 monorepo 共享 dev-dependencies,但我没有找到办法。我正在使用 Poetry 来管理 Python 包依赖项。

使用 poetry add -D 只会在该 Python 包中安装 dev-dependencies(例如 app1)。 将包安装为全局包会影响其他monorepos。

如何在 monorepo1 中一次性安装开发依赖项?

此外,我正在使用 VSCode,并为每个 python 项目设置 settings.json 以使用其自己的 python 环境。例如:

// monorepo1/apps/app1/.vscode/settings.json

  "python.pythonPath": ".venv/bin/python",

我怎样才能找到monorepo的dev-dependencies(例如pytest/pylint/black/ipykernel...)而不安装那些dev-dependencies同一个monorepo中的每个python项目?

【问题讨论】:

【参考方案1】:

你不能这样做。诗歌的哲学是将每个项目分开。但是有一些关于如何支持子包的想法。见https://github.com/python-poetry/poetry/issues/2270

【讨论】:

这是否意味着我需要使用多个子项目多次安装相同的开发依赖项?是否可以对开发依赖项使用符号链接来消除不必要的重复安装?

以上是关于如何在同一个 monorepo 中的 Python 项目之间共享开发依赖项?的主要内容,如果未能解决你的问题,请参考以下文章

Monorepo 中的对等依赖关系

如何在 monorepo 中维护每个模块的自动更改日志?

如何管理多个monorepos

如何从 Lerna monorepo 中的包中加载包?

如何在不发布的情况下在 lerna monorepo 中构建 docker 镜像

尝试在 monorepo 项目中配置 Babel - 当前未启用“classProperties”。如何在 monorepo 项目中设置 Babel?