2014-09-30 3 views
1

Мне было предоставлено дюжину или более старых приложений Django для поддержки. Первая часть этого процесса сводит их с своего древнего сервера Ubuntu 9.04 (который длинный из-за поддержки) на что-то новое и безопасное.Найти все неудовлетворенные зависимости для проекта Python/Django

Но проекты не включают какие-либо списки зависимостей. Из привычки я использую для создания файла requirements.txt при разработке сайта и который делает перераспределение простым и автоматизированным процессом.

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

Есть ли здесь автоматический код-анализ? Что-то, что можно использовать для сканирования локальных каталогов проектов для каждого проекта для создания списка необходимых ему пакетов ... в идеале в именах пакетов в формате PyPI.

+0

Вы можете написать что-нибудь, чтобы выполнить поиск 'import x' и' from x import y', а затем запустить все эти утверждения в целевой среде, чтобы увидеть, какая работа и какой ... –

ответ

1

z3c.dependencychecker может использоваться для этой цели.

Он находится в пространстве имен z3c, но из того, что я знаю, только потому, что он был разработан с учетом экосистемы Zope, но его можно просто использовать для простых проектов Python. Если вы не хотите запускать свои тесты, у него нет никаких зависимостей от пакетов Zope.

Однако он рассматривает только зависимости, указанные в setup.py, а не в requirements.txt. Но должно быть довольно легко синхронизировать отсутствующие зависимости для полного списка зависимостей после их определения.

Использование:

  • Активируйте virtualenv и установите z3c.dependencychecker, например, by pip install z3c.dependencychecker
  • Убедитесь, что вы недавно запустили python setup.py develop, так что у вас есть обновленный *.egg-info.
  • cd в проектах каталогов источник
  • запустить dependencychecker

Обратите внимание, что z3c.dependencychecker не является совершенным (в значительной степени по определению, потому что, как она работает), поэтому он может сообщить о некоторых ложных срабатываний. Но, по моему опыту, это очень хорошее начало, и должно быть довольно легко проверить, почему он сообщил об определенной зависимости, и отсеивает ложные срабатывания.

Смежные вопросы