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