================================================================================
$Id: AutoReqProv.txt 29 2006-06-10 12:08:45Z ns $
--------------------------------------------------------------------------------
Автоматическое определение зависимостей, описание использования

    Автоматическое определение зависимостей для модулей и программ на языке
    "Python" допускает разбиение пакетов на отдельные компоненты,
    обеспечивая возможность контроля полноты установки среды.
    
    Определение зависимостей основано на нахождении в модулях конструкций с
    оператором import и использование его параметров для построения
    зависимостей. Запись зависимости имеет вид:
    
        <ЗАВИСИМОСТЬ> :== "Python" <ВЕРСИЯ> "(" <МОДУЛЬ> { "." <МОДУЛЬ>} ")"
        
        <ВЕРСИЯ> :== <ГОЛОВНАЯ ВЕРСИЯ> "." <ПОДВЕРСИЯ>
        
        (Под версией подразумевается номер версии интерпретатора "Python")
        
        <МОДУЛЬ> -- имя импортируемого модуля.
        
    Использование зависимостей на подмодули в настоящий момент не
    поддерживается, хотя в ограниченном виде такая поддержка появится в
    ближайшем будущем.
    
    Хотя в подавляющем большинстве случаев достаточно настроек по умолчанию,
    поиск зависимостей позволяет указать ряд параметров настройки:
    
        %set_python_req_method    "strict" | "relaxed"
        
            По умолчанию используется значение "relaxed", в этом случае
            находятся операторы import в безусловно-достижимом коде, не
            экранированном ловушками "try". Для языка python это
            представляется наиболее предпочтительной практикой, так как
            подавляющее большнство модулей используют автоконфигурирование
            на этапе выполнения и содержат многочиленые операторы import в
            различных ветвях выполнения, пораждающие ненужные, и, зачастую,
            взпимоисключающие, зависимости.
            
            Если такие "условные" зависимости нужны, то их можно указать явно
            (в вышеописанном формате) или использовать значение "strict" для
            этого параметра, тогда поиск зависимостей найдет все зависимости
            пакета.
            
        %add_python_req_skip   <МОДУЛЬ> [ <МОДУЛЬ> ]
        
            Автоматический поиск зависимостей иногда (особенно, при
            использовании метода "strict") находит лишние зависимости,
            избавится от которых можно перечислив названия требуемых модулей
            в этом операторе.

    Существует процесс, парный к поиску зависимостей - определение
    предоставляемых модулей.  Предоставляемые модули ищутся на пути импорта
    модулей (PYTHONPATH) и включают в себя файлы
    *py, *so.

        %add_python_lib_path    <КАТАЛОГ> [ <КАТАЛОГ> ]
        
            Иногда, модули используются программными пакетами (например,
            Zope), использующими дополнительные каталоги для размещения
            модулей. Такие каталоги можно указать с помощью параметра
            add_python_lib_path.

    Включение и выключение определения зависимостей происводится командами
    AutoReq, AutoProv (значения python, nopython).
    
    Поиск зависимостей отрабатывает практически правильно, но некоторые случаи
    разрешить не в силах - в частности, случай использования builtin модулей
    embedded python. Известные проблемы описаны в FAQ.txt, пожалуста, обязательно
    прочитайте его.
================================================================================
