Информация об изменениях

Сообщение Re[3]: DLL HELL от 29.02.2024 13:06

Изменено 29.02.2024 13:06 Sinclair

Re[3]: DLL HELL
Здравствуйте, Константин Б., Вы писали:
КБ>Тебе встречался пакетный менеджер который работает по такому принципу?
Формально — даже pip должен делать именно это. А иначе зачем все эти >= и <=?

КБ>Ну вот я бы в такой ситуации сделал вывод что разработчики sphinx которые некорректно указали версии.

Ну, тут возникает такой вопрос — а как корректно указать версии в такой ситуации?

КБ>На самом деле в первую очередь конечно виноваты вы. Раз уж вас есть работающий набор версий пакетов почему вы не использовали его?


КБ>pip freeze > requirements.txt

КБ>pip install -r requirements.txt

КБ>Не знали что так можно?

Знали, и часть пакетов уже запихана в requirements.txt. Кто же знал, что с течением времени всё начнёт деградировать?

КБ>Ну допустим виноват pip. Как это по твоему должно работать? pip должен скачать все версии всех пакетов и как-то выбрать из них совместимое подмножество?

Ну, как обычно — сначала качаем метаданные, потом решаем систему неравенств.
Более-менее любой пакетный менеджер способен на подвиги вида
A [installed: 1.0]
B [required: Any, installed: 1.0.4]
D [required: >= 1.0]
C [required: >=2.0.0, installed: 2.0.1]
D [required: < 1.5]

Как-то же они выбирают совместимое подмножество, не так ли?
И если даже мы упираемся в какие-нибудь нездоровые экспоненциальности, то можно не искать точное решение, а просто отрапортовать неудачу. А делать вид, что всё прошло успешно, и оставлять локальную систему в неработоспособном состоянии — ну, такое себе.
Re[3]: DLL HELL
Здравствуйте, Константин Б., Вы писали:
КБ>Тебе встречался пакетный менеджер который работает по такому принципу?
Формально — даже pip должен делать именно это. А иначе зачем все эти >= и <=?

КБ>Ну вот я бы в такой ситуации сделал вывод что разработчики sphinx которые некорректно указали версии.

Ну, тут возникает такой вопрос — а как корректно указать версии в такой ситуации?

КБ>На самом деле в первую очередь конечно виноваты вы. Раз уж вас есть работающий набор версий пакетов почему вы не использовали его?


КБ>pip freeze > requirements.txt

КБ>pip install -r requirements.txt

КБ>Не знали что так можно?

Знали, и часть пакетов уже запихана в requirements.txt. Кто же знал, что с течением времени всё начнёт деградировать?

КБ>Ну допустим виноват pip. Как это по твоему должно работать? pip должен скачать все версии всех пакетов и как-то выбрать из них совместимое подмножество?

Ну, как обычно — сначала качаем метаданные, потом решаем систему неравенств.
Более-менее любой пакетный менеджер способен на подвиги вида
A [installed: 1.0]
  B [required: Any, installed: 1.0.4]
    D [required: >= 1.0]
  C [required: >=2.0.0, installed: 2.0.1]
    D [required: < 1.5]


Как-то же они выбирают совместимое подмножество, не так ли?
И если даже мы упираемся в какие-нибудь нездоровые экспоненциальности, то можно не искать точное решение, а просто отрапортовать неудачу. А делать вид, что всё прошло успешно, и оставлять локальную систему в неработоспособном состоянии — ну, такое себе.