从monorepo安装Python包

从monorepo安装Python包,python,git,pip,monorepo,python-poetry,Python,Git,Pip,Monorepo,Python Poetry,我们有一个私有的git monorepo,它承载了许多Python包。Poetry是最初为项目选择的依赖项管理工具。无论如何,由于以下原因,创建新的setup.py文件是不可接受的解决方案 结构的简化版本: git-monorepo ├── pkg-1 │ ├── pkg │ │ └── mod1.py │ └── pyproject.toml ├── pkg-2 │ ├── pkg │ │ └── mod2.py │ └── pyproject.toml └──

我们有一个私有的git monorepo,它承载了许多Python包。Poetry是最初为项目选择的依赖项管理工具。无论如何,由于以下原因,创建新的
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-1
lib

因此,问题是:

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

让我们考虑一个例子,我们尝试安装<代码> PKG-1 ,其中代码> PKG-1/PyPosi.ToML包括以下几行:

...

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

...
运行
pip
的结果,如中所述:

$pip安装-e git+https://gitlab.com/my-account/git-monorepo#“egg=pkg-1&子目录=pkg-1”
回溯(最近一次呼叫最后一次):
文件“/home/hblanco/.local/lib/python3.8/site packages/pip/_vendor/pkg_resources/_init__.py”,第3101行,在_init中__
超级(需求,自我)。\uuuu初始化\uuuuu(需求字符串)
文件“/home/hblanco/.local/lib/python3.8/site packages/pip/_vendor/packaging/requirements.py”,第115行,在uu init中__
引发InvalidRequest(“无效URL:{0}”。格式(req.URL))
pip._vendor.packaging.requirements.invalidRequest:无效URL:../lib