Кроссплатформенный Pipenv.lock
Я создаю кроссплатформенное приложение Python, используя pipenv
(насколько я понимаю для управления зависимостями и виртуальными окружениями.poetry
тоже имеет такую же проблему)
При попытке собрать приложение на Windows и Linux я заметил, что Pipenv.lock
зависит от платформы.
Например, я создаю проект на Windows и добавляю pytest
, в нем есть colorama
с участием "markers": "sys_platform == 'win32'"
в файле блокировки. Но при изменении файла блокировки в Linux, например при добавлении новой библиотеки, эта зависимость исчезнет.
Вот полный вывод для обеих систем и diff https://gist.github.com/AlexP11223/6457fd4c98272c526c855c63088c00d4
Это должно работать так? Если да, каков наилучший способ справиться с этим? Есть ли лучшее решение, чем просто фиксация файлов блокировки для всех платформ в репозитории Git (например, Pipenv-win.lock
, Pipenv-linux.lock
) и переименование одного из них в Pipenv.lock
когда строишь?
1 ответ
https://github.com/pypa/pipenv/issues/3902
Разработчик Pipenv предложил добавить --keep-outdated
вариант. Кажется, работает, по крайней мере, в этом простом примере.
В настоящее время он не работает в последней версии (2018.11.26), только в основной ветке Git-репо.
UPD: похоже, я был неправ в поэзии, и по умолчанию он обрабатывает это правильно https://gist.github.com/AlexP11223/afbe247175efdcc897930d8c6ab04184