[sisyphus] Зависимости программ на Python
Alexey Rusakov
=?iso-8859-1?q?ktirf_=CE=C1_altlinux=2Eru?=
Пн Май 9 20:14:56 MSD 2005
trash4 wrote:
>Дело в том, что доска (board) python.c, стартующая все
>питон-расширения проверяет наличие pygtk и pygnome, попросту
>импортируя эти модули. Незнаю, где там собака порылась, я в сях
>не силён, но проблема была именно здесь. Проверку эту мы просто
>профанируем. Далее всё работает ОК. Так что всем рабоваться и
>детей радовать (а я ещё и жену порадовал :-) )
>
>
Похоже, это тенденция, поэтому изложу свои мысли по поводу и хотел бы
услышать мнение обчественности.
Проблема касается пакетов, в которых происходит импорт модулей Python из
кода на C/C++ (разнообразные привязки, но не только). Встречается плохая
обработка отсутствующих пакетов при неудачном их импорте из C/C++. К
сожалению, бывает так, что эти пакеты ещё и не прописаны в зависимостях
(автоопределение зависимостей такие пакеты, естественно, пропускает).
Результатом становится успешно установленная программа, которая дохнет
(обычно сразу после запуска) с невразумительным сообщением об ошибке
и/или коредампом. Самое смешное, что в некоторых случаях импортируемый
модуль и не нужен, и программа замечательно работает при отключенной
попытке импорта (конечно, до тех пор пока не будет попытки использовать
что-нибудь из неустановленного модуля).
Возможно, стоит анализировать попытки импорта тех или иных модулей не
только из Python, но и из C/C++. Насколько я понимаю, это не очень
сложно сделать, поскольку импорт из C/C++ делается вполне определённой
функцией (Py_ImportModule), вызовы которой нужно отследить и получить из
них имена импортируемых модулей. Побочным эффектом будут лишние
зависимости, но наш buildreq всегда отличался щедростью :)
--
Alexey "Ktirf" Rusakov
Подробная информация о списке рассылки Sisyphus