我们有一个私人的git monorepo,它托管了许多Python软件包。诗歌是最初为该项目选择的依赖性管理工具。无论如何,由于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
从此monorepo安装软件包?
让我们以尝试安装pkg-1
的示例为例,其中pkg-1/pyproject.toml
包含以下几行:
...
[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