[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