我们有一个私有的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-1
和lib
。
因此,问题是:
如何使用pip
从这个单体库安装包?
让我们以安装pkg-1
为例,其中pkg-1/pyproject.toml
包括以下行:
...
[tool.poetry.dependencies]
lib = {path = "../lib/"}
...
在版本控制系统支持文档中所解释的,运行
pip
的结果如下:$ 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