DLL HELL
От: кубик  
Дата: 01.08.22 14:14
Оценка: +15 :))) :))) :))) :))) :))) :))) :)))
Блин, сколько воя было про DLL hell в винде.
Боже мой,какой это был детский сад по сравнению с питоном на линуксе ...
Re: DLL HELL
От: Sharov Россия  
Дата: 01.08.22 14:25
Оценка:
Здравствуйте, кубик, Вы писали:

К>Блин, сколько воя было про DLL hell в винде.

К>Боже мой,какой это был детский сад по сравнению с питоном на линуксе ...

conda, venv?
Кодом людям нужно помогать!
Re: DLL HELL
От: sergey2b ЮАР  
Дата: 01.08.22 14:27
Оценка:
Что не так с Python ?
Re[2]: DLL HELL
От: vsb Казахстан  
Дата: 01.08.22 14:58
Оценка:
Здравствуйте, sergey2b, Вы писали:

S>Что не так с Python ?


Кто-то venv не осилил, похоже. А так всё с ним нормально.
Re[3]: DLL HELL
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 01.08.22 15:16
Оценка: 8 (6) +2
Здравствуйте, vsb, Вы писали:

vsb>Кто-то venv не осилил, похоже. А так всё с ним нормально.


Всё равно гемор. Если работаешь с теми же библиотеками на С++, то собираешь все на одном тулчейне, одним компилятором один раз и всё. Вышел новый TensorRT, который не совместим с предыдущим? Я не делаю второй продукт, я меняю все места, которые несовместимы так, чтобы они собирались корректно с обоими версиями, пересобираю и пользуюсь. Вышел новый OpenCV? Я не делаю новую версию своей библиотеки, а правлю исходники (чужие исходники в том числе), чтобы они поддерживали обе версии.

Как жить с Питоновскими либами в таких условиях я так и не понял. Взял одну библиотеку с одними зависимостями, взял вторую с другими зависимостями и... И оно может в какой-нибудь момент среди работы просто упасть. Или совсем не заведётся. Вот недавний пример: SwinTransformer зависит от mmdetection и ещё десятка других библиотек годичной давности. У меня он завёлся, работает.
В проект с новой версией mmdetection (и ещё десятка других библиотек) я его уже подключить не могу, потому что там переделали API — падает во время работы. Пытаюсь поправить, не получается. В интернетах пишут, что SwinTransformer уже есть в новой mmdetection, а этот старый и его не надо использовать. Но блин! У меня на старом обучена нейросеть, которая в новом уже не загружается. По факту, мне надо несколько недель переобучать сетку, чтобы просто проверить гипотезу.
Отсюда идёт простой архитектурный высер: делать на каждый чих свой докер, в нём микросервис и приложение превращается из одного простого линейного пайплайна без копирования памяти внутри себя в сборище докерных микросервисов, которые при работе тормозят. Теоретически, оно получается легко масштабируемым, но только мне надо, чтобы оно работало на дохленьком ноуте у клиента.
Re[4]: DLL HELL
От: novitk США  
Дата: 01.08.22 20:32
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Всё равно гемор. Если работаешь с теми же библиотеками на С++, то собираешь все на одном тулчейне, одним компилятором один раз и всё. Вышел новый TensorRT, который не совместим с предыдущим? Я не делаю второй продукт, я меняю все места, которые несовместимы так, чтобы они собирались корректно с обоими версиями, пересобираю и пользуюсь. Вышел новый OpenCV? Я не делаю новую версию своей библиотеки, а правлю исходники (чужие исходники в том числе), чтобы они поддерживали обе версии.


Ты делаешь странные веши или я не понимаю. Если не bleeding edge, то conda/venv. Если bleeading edge, то зачем две версии, если все равно надо руками строить?
Re: DLL HELL
От: кубик  
Дата: 02.08.22 03:55
Оценка: 1 (1) +2 :)
Всё это какая то херня типа зеленой энергии. Под видом того что опенсорс, выгода, в IT заводят такую штуку что постоянно надо апгрейдится, копаться в зависимостях которые сами зависят
а после всего окажется что какая то хренотень (pip) не может SSL с SNI.. Зачем качаете сами ?? Вызывайте wget или curl!
В Windows как прекрасно заботились о compartibility, придумали разные опции, добавили всякие модули AppCompat что б все старое работло. Бережно относились к труду програамистов.
Сейчас ... ну зеленая энергия, не иначе.
Re[5]: DLL HELL
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 02.08.22 04:48
Оценка:
Здравствуйте, novitk, Вы писали:

N>Ты делаешь странные веши или я не понимаю. Если не bleeding edge, то conda/venv. Если bleeading edge, то зачем две версии, если все равно надо руками строить?


Ничего не понял. Я хотел использовать библиотеку с зависимостями годичной давности в проекте с современными зависимостями. Зависимости во многом совпадают, но из-за разных API вместе не работают. По отдельности в разных venv оно работает, каждый в своей песочнице. В одном проекте уже нет.
Re[4]: DLL HELL
От: Vzhyk2  
Дата: 02.08.22 06:14
Оценка: :)
N>В проект с новой версией mmdetection (и ещё десятка других библиотек) я его уже подключить не могу, потому что там переделали API — падает во время работы. Пытаюсь поправить, не получается. В интернетах пишут, что SwinTransformer уже есть в новой mmdetection, а этот старый и его не надо использовать. Но блин! У меня на старом обучена нейросеть, которая в новом уже не загружается. По факту, мне надо несколько недель переобучать сетку, чтобы просто проверить гипотезу.
Ну во-первых, пользуйся собственно движками нейронок, а не обертками над ними. Да обертки часто удобнее, но там бардака больше, чем в собственно движках. А если влоб будешь юзать cuda и cudnn, то с обратной совместимостью там всё очень неплохо.
Второе, купи пачку тесл или заплати прилично гугла или амазону и обучишь быстро. Разрабы движков нейронок работают на суперкомпах и в общем им пофиг на мелочь в виде 3090.
Re: DLL HELL
От: jahr  
Дата: 02.08.22 06:16
Оценка: +3
Здравствуйте, кубик, Вы писали:

К>Блин, сколько воя было про DLL hell в винде.

К>Боже мой,какой это был детский сад по сравнению с питоном на линуксе ...

Каким боком здесь линукс? Это все питон, на винде с ним еще больше геморроя.
Re[2]: DLL HELL
От: Vzhyk2  
Дата: 02.08.22 06:19
Оценка: 1 (1) +2 :)
К>В Windows как прекрасно заботились о compartibility, придумали разные опции, добавили всякие модули AppCompat что б все старое работло. Бережно относились к труду програамистов.
В линухе со либами из стандартных реп тоже всё отлично, даже лучше, чем в винде.
Описанный дурдом с питоном и он одинаков и в винде и в линухе.
И добавлю питон хорош для прототипирования и ужасен для прода.
Re[6]: DLL HELL
От: Vzhyk2  
Дата: 02.08.22 06:20
Оценка: -1 :))
N>Ничего не понял. Я хотел использовать библиотеку с зависимостями годичной давности в проекте с современными зависимостями. Зависимости во многом совпадают, но из-за разных API вместе не работают. По отдельности в разных venv оно работает, каждый в своей песочнице. В одном проекте уже нет.
Ну так в питоне такие традиции. На обратную совместимость там никогда внимания не обращали. Потянул питона в прод — ССЗБ.
Re[4]: DLL HELL
От: Ватакуси Россия  
Дата: 02.08.22 11:45
Оценка: +2
vsb>>Кто-то venv не осилил, похоже. А так всё с ним нормально.

N>Всё равно гемор. Если работаешь с теми же библиотеками на С++, то собираешь все на одном тулчейне, одним компилятором один раз и всё. Вышел новый TensorRT, который не совместим с предыдущим? Я не делаю второй продукт, я меняю все места, которые несовместимы так, чтобы они собирались корректно с обоими версиями, пересобираю и пользуюсь. Вышел новый OpenCV? Я не делаю новую версию своей библиотеки, а правлю исходники (чужие исходники в том числе), чтобы они поддерживали обе версии.


N>Как жить с Питоновскими либами в таких условиях я так и не понял. Взял одну библиотеку с одними зависимостями, взял вторую с другими зависимостями и... И оно может в какой-нибудь момент среди работы просто упасть. Или совсем не заведётся. Вот недавний пример: SwinTransformer зависит от mmdetection и ещё десятка других библиотек годичной давности. У меня он завёлся, работает.

N>В проект с новой версией mmdetection (и ещё десятка других библиотек) я его уже подключить не могу, потому что там переделали API — падает во время работы. Пытаюсь поправить, не получается. В интернетах пишут, что SwinTransformer уже есть в новой mmdetection, а этот старый и его не надо использовать. Но блин! У меня на старом обучена нейросеть, которая в новом уже не загружается. По факту, мне надо несколько недель переобучать сетку, чтобы просто проверить гипотезу.
N>Отсюда идёт простой архитектурный высер: делать на каждый чих свой докер, в нём микросервис и приложение превращается из одного простого линейного пайплайна без копирования памяти внутри себя в сборище докерных микросервисов, которые при работе тормозят. Теоретически, оно получается легко масштабируемым, но только мне надо, чтобы оно работало на дохленьком ноуте у клиента.

Собственно, это проблема не питона как такового, а сложностей (или раздутости — как угодно можно воспронимать) этих библиотек. Ровно такая же фигня с nodejs (там ещё хуже бывает, когда по капотом — питон 2, например), линуксом и прочими пакетными системами.
Лично я вижу только один способ — постоянно обновляться и жить на самых последних (и при этом рабочих) версиях. Иногда приходится брать исходники и править, да
Все будет Украина!
Re[3]: DLL HELL
От: Ватакуси Россия  
Дата: 02.08.22 11:48
Оценка: :))
К>>В Windows как прекрасно заботились о compartibility, придумали разные опции, добавили всякие модули AppCompat что б все старое работло. Бережно относились к труду програамистов.
V>В линухе со либами из стандартных реп тоже всё отлично, даже лучше, чем в винде.
V>Описанный дурдом с питоном и он одинаков и в винде и в линухе.
V>И добавлю питон хорош для прототипирования и ужасен для прода.

Это банально неправда. Стандартные репы содержат версии 3-5 летней давности. Не нравится? Собирай сам из исходников (несколько дней, а то и недель радости тебе обеспечено).
Питончик отлично работает везде, где у людей прямые руки. Как собственно и с любым другим инструментом.
Все будет Украина!
Re[2]: DLL HELL
От: Ватакуси Россия  
Дата: 02.08.22 11:50
Оценка: 3 (1)
К>>Блин, сколько воя было про DLL hell в винде.
К>>Боже мой,какой это был детский сад по сравнению с питоном на линуксе ...

J>Каким боком здесь линукс? Это все питон, на винде с ним еще больше геморроя.


Напрямую. Пример. Берёшь tornado, который именно на линухе работает типа хорошо. Берёшь psycopg2, открываешь соединение к базе и вызываешь tornado.fork, в итоге (хотя документация говорит об обратном) у тебя ОДНО соединение между разными процессами. Как?
Это нужно спросить у линуха.
Все будет Украина!
Re[2]: DLL HELL
От: кубик  
Дата: 02.08.22 13:22
Оценка: :)
J>Каким боком здесь линукс? Это все питон, на винде с ним еще больше геморроя.

Потому что добавляется хелл от разнообразия других библиотек. И несовместиности дистров.
Re[6]: DLL HELL
От: novitk США  
Дата: 02.08.22 14:47
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Ничего не понял. Я хотел использовать библиотеку с зависимостями годичной давности в проекте с современными зависимостями.

И ты решаешь это в плюсах при помощи правки исходников, как я понял. Почему тоже самое не сделать для питона? Геморой конечно увеличен(врапперы), но претензия к организации библиотек имхо не совсем по адресу.
Re[7]: DLL HELL
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 02.08.22 14:50
Оценка: 1 (1) +2
Здравствуйте, novitk, Вы писали:

N>И ты решаешь это в плюсах при помощи правки исходников, как я понял.


Да, все проблемы вижу на этапе компиляции.

N>Почему тоже самое не сделать для питона? Геморой конечно увеличен(врапперы), но претензия к организации библиотек имхо не совсем по адресу.


1. Потому что это динамика, я тупо не вижу всех проблем сразу.
2. Библиотек реально очень много. Как-то так получается, что плюсовых зависимостей всегда меньше и всегда они консервативнее.
Re[4]: DLL HELL
От: Константин Б. Россия  
Дата: 02.08.22 15:37
Оценка: +2 -1 :)
Здравствуйте, Nuzhny, Вы писали:

N>Здравствуйте, vsb, Вы писали:


vsb>>Кто-то venv не осилил, похоже. А так всё с ним нормально.


N> ...правлю исходники (чужие исходники в том числе), чтобы они поддерживали обе версии.


N> ...Пытаюсь поправить, не получается.


Т.е. в библиотеке А сломали обратную совместимость и ты смог код поправить. В библиотеке Б сломали совместимость сильнее и ты не смог код поправить.

И... ты решил что тут виноват язык на котором написана библиотека Б? 🤔
Re[8]: DLL HELL
От: novitk США  
Дата: 02.08.22 15:56
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>1. Потому что это динамика, я тупо не вижу всех проблем сразу.

N>2. Библиотек реально очень много. Как-то так получается, что плюсовых зависимостей всегда меньше и всегда они консервативнее.

Это обычный флейм "статика/динамика"? Извините, что влез.
Re[5]: DLL HELL
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 02.08.22 19:13
Оценка:
Здравствуйте, Константин Б., Вы писали:

КБ>И... ты решил что тут виноват язык на котором написана библиотека Б? 🤔


Да, так и есть. Ведь pip — это часть стандартной языковой инфраструктуры. И сам язык способствует тому, чтобы на нём писали программы определённым образом.
Re[9]: DLL HELL
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 02.08.22 19:16
Оценка: +1
Здравствуйте, novitk, Вы писали:

N>Это обычный флейм "статика/динамика"? Извините, что влез.


Не только это. Там ещё pip способствует тому, чтобы не было стремления соблюдать совместимость. Легко написать, легко указать версию, легко обновить. В тех же плюсах проблемы с версиями библиотек возникают, например, при использовании vcpkg (может, уже и исправили). Но динамика точно не облегчает работу.
Re[5]: DLL HELL
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 02.08.22 21:00
Оценка: +3
Здравствуйте, Константин Б., Вы писали:

КБ>И... ты решил что тут виноват язык на котором написана библиотека Б? 🤔


Ещё вспомнилось, как бережно отнёсся к пользователям Торвальдс, когда отстоял незадокументированное поведение memcpy в glibc. Прикинь, он хотел, чтобы у всех работала функция, хоть по документации и не должна была. Для удобства пользователей, если ты понимаешь, о чём я.

А ещё я взял исходники С библиотеки, подключил в свой С++17 проект и оно просто заработало без единой проблемы.

Ты скажешь, что это совпадение и ерунда. А мне кажется, что С-программисты реально заботятся об обратной совместимости программ и библиотек.
Re[6]: DLL HELL
От: novitk США  
Дата: 02.08.22 21:26
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>А ещё я взял исходники С библиотеки, подключил в свой С++17 проект и оно просто заработало без единой проблемы.

N>Ты скажешь, что это совпадение и ерунда. А мне кажется, что С-программисты реально заботятся об обратной совместимости программ и библиотек.

Ты слишком обобщаешь и преувеличеваешь, сравнивая стабильность API дедушки POSIXа с новейшими высерами ML сообщества. Все сильно зависит от конкретной библиотеки. Например по моему опыту numpy — стабилен, а pandas — нет.
Re: DLL HELL
От: rosencrantz США  
Дата: 02.08.22 23:45
Оценка:
Здравствуйте, кубик, Вы писали:

К>Блин, сколько воя было про DLL hell в винде.

К>Боже мой,какой это был детский сад по сравнению с питоном на линуксе ...

Pipenv/pyenv Но да, дрянь.
Re[7]: DLL HELL
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 03.08.22 13:07
Оценка: 1 (1)
Здравствуйте, novitk, Вы писали:

N>Ты слишком обобщаешь и преувеличеваешь, сравнивая стабильность API дедушки POSIXа с новейшими высерами ML сообщества. Все сильно зависит от конкретной библиотеки. Например по моему опыту numpy — стабилен, а pandas — нет.


Вот так совершенно случайно оказалось, что солидный кусок numpy написан на С, а pandas целиком на Питоне. Совпадение?
Re[6]: DLL HELL
От: 4058  
Дата: 03.08.22 18:33
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N> ... А мне кажется, что С-программисты реально заботятся об обратной совместимости программ и библиотек.


C язык "зрелый", и не используется для "однодневных" разработок в отличие от ... Поэтому имеется некая культура, что написанное однажды, должно работать настолько долго, на сколько это возможно, да и люди развивающие язык с учетом этого осторожно и бережно вносили изменения.

  немного размышлений про C++
В свою очередь, с C++ получилось несколько хуже, ибо слишком много хайпа вокруг него периодически создавалось, то всем развестистое ООП (с нулевыми издержками) подавай, то на каждом углу метапрограммирование на шаблонах ...
Это безобразие послужило приманкой для теоретиков и прочих идиотов, которые от безделья и практической безграмотности, и так непростой мультипарадигменный язык, бездумно украсили "фишечками" и "рюшечками" сделав его изрядно переусложненным для среднестатистического обывателя.

А на всяких скрипто-языках типа Питона, совсем другая культура разработки, по сути пригодны подобные средства только для прототипирования (однодневок) и возможно обучения в школьных кружках.
Re[6]: DLL HELL
От: Константин Б. Россия  
Дата: 04.08.22 03:51
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Здравствуйте, Константин Б., Вы писали:


КБ>>И... ты решил что тут виноват язык на котором написана библиотека Б? 🤔


N>Да, так и есть. Ведь pip — это часть стандартной языковой инфраструктуры. И сам язык способствует тому, чтобы на нём писали программы определённым образом.


А определенным образом — это каким? И как именно pip этому способствует?
Re[6]: DLL HELL
От: Константин Б. Россия  
Дата: 04.08.22 03:55
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Здравствуйте, Константин Б., Вы писали:


КБ>>И... ты решил что тут виноват язык на котором написана библиотека Б? 🤔


N>Ещё вспомнилось, как бережно отнёсся к пользователям Торвальдс, когда отстоял незадокументированное поведение memcpy в glibc. Прикинь, он хотел, чтобы у всех работала функция, хоть по документации и не должна была. Для удобства пользователей, если ты понимаешь, о чём я.


А еще вспомнился другой известный программист на Си — Ульрих Дреппер. Прикинь, он наоборот хотел чтобы у всех все сломалось 🤷🏿

N>А ещё я взял исходники С библиотеки, подключил в свой С++17 проект и оно просто заработало без единой проблемы.


N>Ты скажешь, что это совпадение и ерунда.


Ну вот когда библиотеки на питоне работают без проблем — это совпадение и ерунда? Или по твоему такого не бывает? )

N>А мне кажется, что С-программисты реально заботятся об обратной совместимости программ и библиотек.


Ульрих Дреппер — не C-программист?
Re[7]: DLL HELL
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 04.08.22 04:41
Оценка: +2
Здравствуйте, Константин Б., Вы писали:

КБ>А определенным образом — это каким? И как именно pip этому способствует?


Разжую ещё раз.
Он позволяет легко получать библиотеки указанных версий. Я же написал выше. Благодаря этой лёгкости у разработчиков создаётся впечатление, что не обязательно соблюдать какую-то совместимость, ведь можно просто указать правильную версию. И это работает на мини проектах, которых на Питоне пишется много. Но когда начинаешь собирать из разных исходников что-то больше, чем проект на тысячу строк (или вообще из jupiter ноутббуков), но проблема с версионностью встаёт в полный рост и сразу видно, что о ней никто не думал. Сверху добавляем динамику и получаем тот самый python hell.
Тут ещё добавляет радости переход по версиям самого языка, я вообще не в курсе, как в Питоне эти штуки решаются и из моего поверхностного опыта кажется, что никак.
Re[7]: DLL HELL
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 04.08.22 04:50
Оценка:
Здравствуйте, Константин Б., Вы писали:

КБ>А еще вспомнился другой известный программист на Си — Ульрих Дреппер. Прикинь, он наоборот хотел чтобы у всех все сломалось 🤷🏿


Где, как, что сломалось? Хоть ссылку на обсуждение кинь.

КБ>Ну вот когда библиотеки на питоне работают без проблем — это совпадение и ерунда? Или по твоему такого не бывает? )


Тут другая логика работает. Библиотека не работает — это аварийная ситуация. У нас может на тысячу библиотек не работать одна библиотека или 5. Это всё очень маленький процент, но во втором случае мы получаем проблем в пять раз больше. Добавь к этому, что исправляются при этом они тяжелее и получишь реальную картину.

N>>А мне кажется, что С-программисты реально заботятся об обратной совместимости программ и библиотек.

КБ>Ульрих Дреппер — не C-программист?

Давай проверим! Зашёл к нему на гитхаб, там у него своих репозиториев 33, из них только 7 на С. Остальные на С++, Питоне, баше, Mathematica... Да, он не С программист, а вполне универсальный программсит, знающий и использующий много разных языков.
Но я в принципе не знал, кто он, пришлось искать. Почему ты привёл его как пример, почему сам не узнал, на чём он программирует? У тебя в принципе аргументы настоящие будут? Ты по факту задал несколько вопросов, упомянул не в тему какую-то неизвестную мне фамилию.
Re[4]: DLL HELL
От: Dym On Россия  
Дата: 04.08.22 07:01
Оценка: +9
Здравствуйте, Ватакуси, Вы писали:

В>Питончик отлично работает везде, где у людей прямые руки.

Когда встречается фраза про "прямые руки", это всегда означает (всегда, без исключений), что на проде огребешь по полной. Потому что в реальности фраза "прямые руки" означает "хитровыделанный, переменный в самых неожиданных местах, радиус кривизны рук и мозгов". Только так, и никак иначе.
Счастье — это Glück!
Re[5]: DLL HELL
От: Ватакуси Россия  
Дата: 04.08.22 08:36
Оценка: -3
В>>Питончик отлично работает везде, где у людей прямые руки.
DO>Когда встречается фраза про "прямые руки", это всегда означает (всегда, без исключений), что на проде огребешь по полной. Потому что в реальности фраза "прямые руки" означает "хитровыделанный, переменный в самых неожиданных местах, радиус кривизны рук и мозгов". Только так, и никак иначе.

Нет, не означает. Более того, с непрямыми руками ты отгребёшь с любым языком/системой/платформой и т.п.
Все будет Украина!
Отредактировано 04.08.2022 10:04 Ватакуси . Предыдущая версия .
Re[6]: DLL HELL
От: Ночной Смотрящий Россия  
Дата: 10.08.22 09:10
Оценка:
Здравствуйте, Ватакуси, Вы писали:

В>Нет, не означает. Более того, с непрямыми руками ты отгребёшь с любым языком/системой/платформой и т.п.


Это небинарная величина.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[5]: DLL HELL
От: Ватакуси Россия  
Дата: 14.02.24 22:24
Оценка:
В>>Питончик отлично работает везде, где у людей прямые руки.
DO>Когда встречается фраза про "прямые руки", это всегда означает (всегда, без исключений), что на проде огребешь по полной. Потому что в реальности фраза "прямые руки" означает "хитровыделанный, переменный в самых неожиданных местах, радиус кривизны рук и мозгов". Только так, и никак иначе.

Представил этих людей в обмнимках с ц++...
Все будет Украина!
Re[8]: DLL HELL
От: GarryIV  
Дата: 14.02.24 23:14
Оценка:
Здравствуйте, Nuzhny, Вы писали:

КБ>>А определенным образом — это каким? И как именно pip этому способствует?


N>Разжую ещё раз.

не подавись

N>Благодаря этой лёгкости у разработчиков создаётся впечатление, что не обязательно соблюдать какую-то совместимость, ведь можно просто указать правильную версию.

ээм, во многих случаях вообще не пишут версию в requirements (и не фризят тоже)
здесь и сейчас работает и норм, что там завтра будет пофиг
WBR, Igor Evgrafov
Re[2]: DLL HELL
От: GarryIV  
Дата: 14.02.24 23:20
Оценка:
Здравствуйте, кубик, Вы писали:

К>В Windows как прекрасно заботились о compartibility

Дык МС и в своих питонячих либах за этим следит, и Амазон с Гуглом.

Совместимость вещь дорогая, простому Ваську нафиг не упало париться с этим для какого-то кубика.
WBR, Igor Evgrafov
Отредактировано 14.02.2024 23:22 GarryIV . Предыдущая версия .
Re[7]: DLL HELL
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 14.02.24 23:22
Оценка:
Здравствуйте, Константин Б., Вы писали:

КБ>А еще вспомнился другой известный программист на Си — Ульрих Дреппер. Прикинь, он наоборот хотел чтобы у всех все сломалось 🤷🏿


Кто это?
Маньяк Робокряк колесит по городу
Re[8]: DLL HELL
От: Константин Б. Россия  
Дата: 15.02.24 07:08
Оценка:
Здравствуйте, Marty, Вы писали:

M>Здравствуйте, Константин Б., Вы писали:


КБ>>А еще вспомнился другой известный программист на Си — Ульрих Дреппер. Прикинь, он наоборот хотел чтобы у всех все сломалось 🤷🏿


M>Кто это?


https://research.redhat.com/blog/project_member/ulrich-drepper/

Был в свое время ментейнером glibc. По стандарту memcpy не поддерживает пересекающиеся области памяти (в этом случае надо использовать memmove)
Однажды в реализацию memcpy внесли оптимизацию которая сломала код всем кто использовал memcpy неправильно.
Был жуткий скандал и срач на эту тему. Дреппер топил за то чтобы эти криворукие программисты правили свой код. Торвальдс топил за то что стандартами надо подтереться.
Re[3]: DLL HELL
От: Pzz Россия https://github.com/alexpevzner
Дата: 15.02.24 08:29
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Кто-то venv не осилил, похоже. А так всё с ним нормально.


Ну вообще, это фиаско, если петону нужен venv для нормальной работы.
Re[9]: DLL HELL
От: vsb Казахстан  
Дата: 15.02.24 09:22
Оценка:
Здравствуйте, Константин Б., Вы писали:

КБ>Был в свое время ментейнером glibc. По стандарту memcpy не поддерживает пересекающиеся области памяти (в этом случае надо использовать memmove)

КБ>Однажды в реализацию memcpy внесли оптимизацию которая сломала код всем кто использовал memcpy неправильно.
КБ>Был жуткий скандал и срач на эту тему. Дреппер топил за то чтобы эти криворукие программисты правили свой код. Торвальдс топил за то что стандартами надо подтереться.

Чем не устроил очевидный промежуточный вариант — с выставленной переменной GLIBC_SLOW_MEMCPY использовать старый вариант, без неё — новый? Это невозможно реализовать без оверхеда? А там дистрибутивы для сломанных программ пускай пишут врапперы. Вроде все довольны. Ну чуток лишнего кода в glibc будет, но там такая махина, что пофиг.
Re[3]: DLL HELL
От: σ  
Дата: 15.02.24 09:43
Оценка:
К>>>Блин, сколько воя было про DLL hell в винде.
К>>>Боже мой,какой это был детский сад по сравнению с питоном на линуксе ...

J>>Каким боком здесь линукс? Это все питон, на винде с ним еще больше геморроя.


В>Напрямую. Пример. Берёшь tornado, который именно на линухе работает типа хорошо. Берёшь psycopg2, открываешь соединение к базе и вызываешь tornado.fork, в итоге (хотя документация говорит об обратном) у тебя ОДНО соединение между разными процессами. Как?


https://www.psycopg.org/docs/usage.html#thread-and-process-safety:
> libpq connections shouldn’t be used by a forked processes, so when using a module such as multiprocessing or a forking web deploy method such as FastCGI make sure to create the connections after the fork.

https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNECT:
> Warning
> On Unix, forking a process with open libpq connections can lead to unpredictable results because the parent and child processes share the same sockets and operating system resources. For this reason, such usage is not recommended

---

В> у тебя ОДНО соединение между разными процессами

В> хотя документация говорит об обратном

Разве?
Re[4]: DLL HELL
От: Константин Б. Россия  
Дата: 15.02.24 11:55
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Здравствуйте, vsb, Вы писали:


vsb>>Кто-то venv не осилил, похоже. А так всё с ним нормально.


Pzz>Ну вообще, это фиаско, если петону нужен venv для нормальной работы.


А напомни почему мы считаем venv фиаской? 🤔
Re[2]: DLL HELL
От: nmd  
Дата: 16.02.24 15:39
Оценка: 1 (1)
Здравствуйте, Sharov, Вы писали:

S>Здравствуйте, кубик, Вы писали:


К>>Блин, сколько воя было про DLL hell в винде.

К>>Боже мой,какой это был детский сад по сравнению с питоном на линуксе ...

S>conda, venv?


Есть еще Poetry, имхо, удобней работать с venv и зависимостями по сравнению с conda и pip.
Re[10]: DLL HELL
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 16.02.24 15:40
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Чем не устроил очевидный промежуточный вариант — с выставленной переменной GLIBC_SLOW_MEMCPY использовать старый вариант, без неё — новый? Это невозможно реализовать без оверхеда? А там дистрибутивы для сломанных программ пускай пишут врапперы. Вроде все довольны. Ну чуток лишнего кода в glibc будет, но там такая махина, что пофиг.



Ну только по умолчанию надо было сделать чтобы работал старый код
Маньяк Робокряк колесит по городу
Re[4]: DLL HELL
От: B0FEE664  
Дата: 16.02.24 17:50
Оценка:
Здравствуйте, σ, Вы писали:

σ>https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNECT:

>> Warning
>> On Unix, forking a process with open libpq connections can lead to unpredictable results because the parent and child processes share the same sockets and operating system resources. For this reason, such usage is not recommendedА вот и ответ на "Каким боком здесь линукс?"
И каждый день — без права на ошибку...
Re: DLL HELL
От: B0FEE664  
Дата: 16.02.24 17:57
Оценка:
Здравствуйте, кубик, Вы писали:

К>Блин, сколько воя было про DLL hell в винде.

Как будто на юниксе есть какое-то отличие.

К>Боже мой,какой это был детский сад по сравнению с питоном на линуксе ...

Разве Питом можно использовать для чего-то серьёзного? Это же интерпретатор...
И каждый день — без права на ошибку...
Re[2]: Всё как всегда
От: Sheridan Россия  
Дата: 19.02.24 05:38
Оценка:
Здравствуйте, sergey2b, Вы писали:

S>Что не так с Python ?


Ктото намусорил, а убирать за собой не хочет, хочет чтобы само.
В соседних ветках же советуют ходить мусорить в другие комнаты, которые предлагают достраивать по необходимости. Ну да, так кажется что всё чище.
Matrix has you...
Re[4]: DLL HELL
От: Sheridan Россия  
Дата: 19.02.24 05:50
Оценка:
Здравствуйте, Ватакуси, Вы писали:


В>Это банально неправда. Стандартные репы содержат версии 3-5 летней давности. Не нравится? Собирай сам из исходников (несколько дней, а то и недель радости тебе обеспечено).

Вы свой проект поставляете тоже из master ветки или всё-таки сначала тестируете со всеми компонентами дистрибутива перед выпуском?
Если тесты проходят — то вы предпринимаете что либо для того, чтобы нужные версии пакетов пришли к заказчику? Ну, например, хотя бы сопровождаете собственный репозиторрий с пакетами, которые считаете стабильными?
Matrix has you...
Re[4]: DLL HELL
От: student__  
Дата: 23.02.24 07:36
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Взял одну библиотеку с одними зависимостями, взял вторую с другими зависимостями и... И оно может в какой-нибудь момент среди работы просто упасть.


Так это у вас процесс выбора нужной библиотеки или какая-то библиотека меняет зависимости, как перчатки?
А что до "просто упасть", так любой питоновский скрипт, не зависящий ни от чего кроме стандартного рантайма, может упасть, если непротестирован.
Re[2]: DLL HELL
От: student__  
Дата: 23.02.24 07:40
Оценка:
Здравствуйте, кубик, Вы писали:
К>В Windows как прекрасно заботились о compartibility, придумали разные опции, добавили всякие модули AppCompat что б все старое работло. Бережно относились к труду програамистов.
А это, пардон, как помогло проблемам Питона на винде?
Или посыл такой, что "этот Питон пришел из дьявольского Юникс мира в наш виндовый монастырь, a надо было все скрипты на VB писать"?
Re: DLL HELL
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.02.24 05:10
Оценка: :)
Здравствуйте, кубик, Вы писали:

К>Блин, сколько воя было про DLL hell в винде.

К>Боже мой,какой это был детский сад по сравнению с питоном на линуксе ...
Я намедни был ошарашен тем, что pip не умеет правильно резолвить зависимости.
То есть ставим, к примеру, sphinx. Версии, к примеру, 4.5, т.к. весь процесс у техдоков заточен именно под него, и "работает — не трогай".
У него прописаны зависимости от ряда contrib-пакетов. В стиле ">=0.9.7".
pip берёт и тащит самые свежие версии этих пакетов.
И ему почему-то всё равно на то, что сами эти пакеты требуют sphinx ">= 5.0".
В итоге после выполнения pip install sphinx==4.5 ставится нерабочая комбинация пакетов.
Я-то наивно полагал, что пакетный менеджер решает систему неравенств, а не просто "рекурсивно тащим все депенды, да ещё и теряя версии".
В итоге приходится методом тыка подбирать совместимые версии и ставить их вручную
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: DLL HELL
От: · Великобритания  
Дата: 28.02.24 10:21
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>То есть ставим, к примеру, sphinx. Версии, к примеру, 4.5, т.к. весь процесс у техдоков заточен именно под него, и "работает — не трогай".

S>У него прописаны зависимости от ряда contrib-пакетов. В стиле ">=0.9.7".
S>pip берёт и тащит самые свежие версии этих пакетов.
S>И ему почему-то всё равно на то, что сами эти пакеты требуют sphinx ">= 5.0".
Офигеть. За циклические зависимости принятно канделябром в приличном обществе.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[3]: DLL HELL
От: Sinclair Россия https://github.com/evilguest/
Дата: 28.02.24 11:04
Оценка: +1 :)
Здравствуйте, ·, Вы писали:
S>>И ему почему-то всё равно на то, что сами эти пакеты требуют sphinx ">= 5.0".
·>Офигеть. За циклические зависимости принятно канделябром в приличном обществе.
Ну, мопед-то не мой. И циклические зависимости, в некотором смысле, это ок. Я погуглил — в питоновом комьюнити считается, что рантайм-депенды могут быть произвольно устроены; вот инсталл-депенды должны быть ациклическими.
И я, наверное, даже могу себе представить причины, которые побудили авторов сфинкса реализовать именно такую топологию.

Но как по мне, так питону нужно или крестик надеть, или трусы снять — если разрешены циклические депенды, то они должны резолвиться корректно, а не ругаться в рантайме на несовместимость пакетов.
А если запрещены — то надо консистентно ругаться на такие пакеты и отказываться их ставить вовсе.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: DLL HELL
От: Константин Б. Россия  
Дата: 29.02.24 12:19
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Я-то наивно полагал, что пакетный менеджер решает систему неравенств, а не просто "рекурсивно тащим все депенды, да ещё и теряя версии".


Тебе встречался пакетный менеджер который работает по такому принципу?

S>В итоге приходится методом тыка подбирать совместимые версии и ставить их вручную


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

pip freeze > requirements.txt
pip install -r requirements.txt

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

Ну допустим виноват pip. Как это по твоему должно работать? pip должен скачать все версии всех пакетов и как-то выбрать из них совместимое подмножество?
Re[3]: DLL HELL
От: Sinclair Россия https://github.com/evilguest/
Дата: 29.02.24 13:06
Оценка: +2
Здравствуйте, Константин Б., Вы писали:
КБ>Тебе встречался пакетный менеджер который работает по такому принципу?
Формально — даже 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]


Как-то же они выбирают совместимое подмножество, не так ли?
И если даже мы упираемся в какие-нибудь нездоровые экспоненциальности, то можно не искать точное решение, а просто отрапортовать неудачу. А делать вид, что всё прошло успешно, и оставлять локальную систему в неработоспособном состоянии — ну, такое себе.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Отредактировано 29.02.2024 13:06 Sinclair . Предыдущая версия .
Re[4]: DLL HELL
От: Константин Б. Россия  
Дата: 01.03.24 08:08
Оценка: 3 (1)
Здравствуйте, Sinclair, Вы писали:

Вообщем посмотрел как прописаны версии пакетов повнимательней. Ты немного наврал.
Зависимость у контриб прописана как

Requires-Dist: Sphinx>=5 ; extra == "standalone"


Чтобы отработало extra нужно имя пакета указывать как sphinxcontrib-applehelp[standalone]. В противном случае условие игнорируется.

Соотвественно комманда
pip install sphinx==4.5.0 sphinxcontrib-applehelp[standalone] sphinxcontrib-devhelp[standalone] sphinxcontrib-jsmath[standalone] sphinxcontrib-qthelp[standalone]

установит пакеты с непротиворечивыми зависимостями.

И да оно будет по очереди скачивать все версии пакетов пока не найдет подходящий.
Re[5]: DLL HELL
От: Sinclair Россия https://github.com/evilguest/
Дата: 01.03.24 15:29
Оценка:
Здравствуйте, Константин Б., Вы писали:

КБ>Вообщем посмотрел как прописаны версии пакетов повнимательней. Ты немного наврал.

В каком именно месте я наврал?
КБ>Зависимость у контриб прописана как
КБ>
Requires-Dist: Sphinx>=5 ; extra == "standalone"

КБ>Чтобы отработало extra нужно имя пакета указывать как sphinxcontrib-applehelp[standalone]. В противном случае условие игнорируется.
Это какое-то шаманство.
Если просто поставить
pip install sphinxcontrib-applehelp==1.0.7

то он стащит свежий sphinx безо всяких standalone.
А если просто сделать
pip install sphinx==4.5.0

то установившийся сфинкс будет неработоспособным.
КБ>Соотвественно комманда
КБ>
pip install sphinx==4.5.0 sphinxcontrib-applehelp[standalone] sphinxcontrib-devhelp[standalone] sphinxcontrib-jsmath[standalone] sphinxcontrib-qthelp[standalone]

КБ>установит пакеты с непротиворечивыми зависимостями.
Это всё отлично — вопрос: как я должен до этого догадаться? Кстати, вы один из пакетов забыли — так что конкретно эта команда по-прежнему поставит нерабочий сфинкс

КБ>И да оно будет по очереди скачивать все версии пакетов пока не найдет подходящий.

Ну, вот видите — может же, когда захочет. А только что вы были уверены, что сие решительно невозможно
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[6]: DLL HELL
От: Константин Б. Россия  
Дата: 01.03.24 15:39
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, Константин Б., Вы писали:


КБ>>Вообщем посмотрел как прописаны версии пакетов повнимательней. Ты немного наврал.

S>В каком именно месте я наврал?

И ему почему-то всё равно на то, что сами эти пакеты требуют sphinx ">= 5.0".


Требуют да несовсем.

S>Это всё отлично — вопрос: как я должен до этого догадаться? Кстати, вы один из пакетов забыли — так что конкретно эта команда по-прежнему поставит нерабочий сфинкс


Это вопроc не ко мне и не к pip.
pip сделал ровно то что ты от него хотел (и больше чем я от него ожидал, это верно) — решил систему неравенств. То что разработчики сфинкса так интересно прописали неравенства — вопрос к ним.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.