从monorepo安装Python包

2024-06-01 07:50:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我们有一个私有的git monorepo,它承载了许多Python包。Poetry是最初为项目选择的依赖项管理工具。无论如何,由于this Poetry issue,不接受涉及创建新setup.py文件的解决方案

结构的简化版本:

git-monorepo
├── pkg-1
│   ├── pkg
│   │   └── mod1.py
│   └── pyproject.toml
├── pkg-2
│   ├── pkg
│   │   └── mod2.py
│   └── pyproject.toml
└── lib
    ├── pkg
    │   └── lib.py
    └── pyproject.toml

库分发包lib独立于任何其他包。然而,pkg-1依赖于lib,而pkg-2依赖于pkg-1lib

因此,问题是:

使用pip从monorepo安装软件包的正确方法是什么?

让我们考虑一个例子,我们尝试安装^ {< CD3>},其中^ {< CD10>}包含以下行:

...

[tool.poetry.dependencies]
lib = {path = "../lib/"}

...

运行pip的结果,如VCS support documentation中所述:

$ pip install -e git+https://gitlab.com/my-account/git-monorepo#"egg=pkg-1&subdirectory=pkg-1"

Traceback (most recent call last):
  File "/home/hblanco/.local/lib/python3.8/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3101, in __init__
    super(Requirement, self).__init__(requirement_string)
  File "/home/hblanco/.local/lib/python3.8/site-packages/pip/_vendor/packaging/requirements.py", line 115, in __init__
    raise InvalidRequirement("Invalid URL: {0}".format(req.url))
pip._vendor.packaging.requirements.InvalidRequirement: Invalid URL: ../lib

Tags: pippygithomepoetryinitliblocal