使用 Poetry 时,在本地开发时允许使用本地可编辑版本的包,以及在部署时在存储库中使用已发布版本的包的最佳实践是什么?
我正在开发一个项目,该项目使用自行开发的Python包和诗歌进行依赖管理。在本地开发时,我想使用带有该标志安装的本地版本的软件包,--editable以便我可以轻松进行更改。但是,当我部署项目时,我想从私人管理的存储库安装该包。
目前,我似乎可以选择其中之一。我设置了两个可选的依赖项组,private和local-private,并包含了私人存储库的补充源。我的pyproject.toml看起来像这样:
[tool.poetry.group.local-private]
optional = true
[tool.poetry.group.local-private.dependencies]
my-package = {path = "../my-package"}
[tool.poetry.group.private]
optional = true
[tool.poetry.group.private.dependencies]
my-package = {version = "^0.2.0", source = "private_repo"}
[[tool.poetry.source]]
name = "private_repo"
url = "https://myprivaterepo.com"
priority = "supplemental"
[[tool.poetry.source]]
name = "PyPI"
priority = "primary"
Run Code Online (Sandbox Code Playgroud)
然而,似乎因为这些包共享相同的名称,所以它们在poetry.lock文件中获得一个条目。因此,当我安装任一组时,my-package两者都是从同一源拉取的。
我知道诗歌可以解决所有依赖关系,无论它们是否属于可选组。但是有没有办法为一个包指定两个不同的源,或者我的做法完全错误吗?
编辑/解决方法:
解决方法,这并不是一个真正正确的解决方法,我最终得到的是使用 pip 单独安装本地包。所以我的pyproject.toml文件看起来像这样:
[tool.poetry.group.private]
optional = true
[tool.poetry.group.private.dependencies]
my-package = {version = "^0.2.0", source = "private_repo"}
[[tool.poetry.source]]
name = "private_repo"
url = "https://myprivaterepo.com"
priority = "supplemental"
[[tool.poetry.source]]
name = "PyPI"
priority = "primary"
Run Code Online (Sandbox Code Playgroud)
然后我有一个private-requirements.txt像这样的单独文件:
-e ../my-local-package
Run Code Online (Sandbox Code Playgroud)
本地安装时,我运行poetry install然后pip install -r private-requirements.txt. 在部署期间安装时,我运行poetry install --with private.
这并不是真正的修复,因为诗歌不会在本地解决my-local-package我的包和其余包之间的依赖关系。除了这个潜在的陷阱之外,这也是有效的。
| 归档时间: |
|
| 查看次数: |
452 次 |
| 最近记录: |