Python Poetry: как указать альтернативы зависимости для конкретной платформы?

Небольшая предыстория: проект, над которым я работаю, использует библиотеку python-ldap. Поскольку мы являемся командой разработчиков смешанных ОС (некоторые используют Linux, некоторые macOS и некоторые Windows), я пытаюсь создать проект для всех сред. К сожалению, python-ldap официально не поддерживается для Windows, но существуют неофициальные колеса, поддерживаемые Кристоф Гольке. Я проверил файл колеса, и он отлично работает.

Проблема: как указать 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?


person Igor Brejc    schedule 06.04.2020    source источник
comment
У меня такая же проблема. В настоящее время я использую закомментированные строки зависимостей, но это далеко не идеально. Скажите, пожалуйста, нашли ли вы решение. Спасибо!   -  person András Geiszl    schedule 17.04.2020


Ответы (1)


Вы можете использовать ключевое слово platform

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

Источник

person Jacob Pavlock    schedule 03.08.2020