13

一些背景: 我正在从事的项目使用python-ldap库。由于我们是一个混合操作系统开发团队(一些使用 Linux,一些 macOS 和一些 Windows),我试图让项目在所有环境上构建。不幸的是,python-ldapWindows 没有官方支持,但Christoph Gohlke 维护了非官方的轮子。我已经测试了轮文件,它工作正常。

问题:我如何告诉 Poetry 在 Windows 上使用轮子,python-ldap在 Linux 和 macOS 上使用官方包?

我尝试了多种方法,包括使用多个约束依赖项和标记

python-ldap = [
    { markers = "sys_platform == 'linux'", version = "*" },
    { markers = "sys_platform == 'win32'", path="lib/python_ldap-3.2.0-cp36-cp36m-win_amd64.whl" }

...但是,从poetry.lock文件来看,似乎标记随后被合并,只是确定是否应该安装该

[[package]]
category = "main"
description = "Python modules for implementing LDAP clients"
marker = "sys_platform == \"linux\" or sys_platform == \"win32\""
name = "python-ldap"

是否有另一种方法来处理 Poetry 中特定于平台的依赖关系?

4

2 回答 2

7

您可以使用platform关键字

python-ldap = [
    { version = '*', platform = 'linux' },
]

资源

于 2020-08-03T00:39:33.500 回答
2

执行此操作的最佳方法是将--platform选项与poetry add命令一起使用。要faiss在 Mac(faiss-cpu不支持 CUDA GPU)和 Linux(faiss-gpu支持 GPU/CUDA)上安装,请运行以下命令:

# Add each package to your project
poetry add faiss-gpu --platform linux
poetry add faiss-cpu --platform darwin

# Thereafter just install
poetry install

如上所述,您可以pyproject.toml按照其他答案中的说明在文件中执行此操作,但 CLI 是最好的。poetry update如果您直接编辑,请务必pyproject.toml

[tool.poetry.dependencies]
faiss-cpu = {version = "^1.7.1", platform = "darwin"}
faiss-gpu = {version = "^1.7.1", platform = "linux"}

哈拉!

于 2021-12-21T19:25:05.277 回答