ФорумПрограммированиеPython → Get all imported packages list in #bash

Get all imported packages list in #bash

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Март 17, 2016, 9:59 п.п.

    Порой в чужом проекте вам хочется выделить все использованые пакеты в requirements.txt, ибо до вас этого никто не сделал. Но как узнать список того что было использовано?

    grep -Rhs import . | awk '{print $2;}' | sort | uniq

    :)

    Ну и вариант для совсем упоротых типа меня.

    grep -Rhs import . | awk '{print $2;}' | sort | uniq | xargs -I{} sh -c 'python -c "list(__import__(x) for x in filter(None, map(str.strip, '"'"'{}'"'"'.split('"'"','"'"'))))" 2>/dev/null || echo {}'

    Спустя 2751 сек.

    Последний вариант пытается импортировать все что находит и выводит строчку если не удалось импортировать. Разбивает по "," строчки, стрипит и фильтрует, чтобы фальш ошибок не было при импорте, все как надо :)

    Общий gist :)

    https://gist.github.com/phpdude/1cdb68de4be01c2dce9a

    Сапожник без сапог
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz Март 18, 2016, 12:20 д.п., спустя 2 часа 21 минуту 32 секунды

    @phpdude, название в pypi отличается от названия импортированного пакета
    я предпочитаю интерактивно ставить пакеты по требованию
    и разбираться детально что за пакет использовался, т.н. "инспекция кода"

    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Март 18, 2016, 12:30 д.п., спустя 9 минут 29 секунд

    @phpdude, название в pypi отличается от названия импортированного пакета
    я предпочитаю интерактивно ставить пакеты по требованию
    и разбираться детально что за пакет использовался, т.н. "инспекция кода"

    @adw0rd, бля ну это все очевидно же! Вот есть у тебя 500 файлов исходников, надо хотя бы первоначальный список для инспекции иметь, не будешь же руками все обходить )) Вот этот первоначальный список утилитка и готовит

    Сапожник без сапог
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz Март 18, 2016, 12:45 д.п., спустя 15 минут 33 секунды

    @phpdude, запускаешь проект и он тебе сам скажет что ему не хватает
    десяток итераций и ты все найдешь + код изучишь немного

    Спустя 93 сек.

    а твой подход - утилита генерит список каких-то пакетов, ты их все пытаешься с pypi тянуть
    pypi половину, а то и больше не того ставит, ибо названия пакетов и то что в пайпи разное
    или как?

    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Март 18, 2016, 12:49 д.п., спустя 3 минуты 26 секунд

    @phpdude, запускаешь проект и он тебе сам скажет что ему не хватает
    десяток итераций и ты все найдешь + код изучишь немного

    @adw0rd, ну ты шутник, а если это flask app в 10 файлах который имеет app и который до этого запускался под google app engine? :) Не очень крутой метод если честно :)

    Спустя 49 сек.

    а твой подход - утилита генерит список каких-то пакетов, ты их все пытаешься с pypi тянуть
    pypi половину, а то и больше не того ставит, ибо названия пакетов и то что в пайпи разное
    или как?

    @adw0rd, блеядь! она пытается это импортировать, если удается - ок, если нет - пишет в out название того что импортировалось, а дальше уже сам ищешь что это было в реальности. Уж такие глупости как ты говоришь я и сам прекрасно понимаю )

    Сапожник без сапог
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz Март 18, 2016, 1:13 д.п., спустя 24 минуты 8 секунд

    @phpdude, я понял суть твоей утилиты, мне она точно незачем)

    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Март 18, 2016, 1:16 д.п., спустя 2 минуты 32 секунды

    @phpdude, я понял суть твоей утилиты, мне она точно незачем)

    @adw0rd, ну вот мне надо стало, подумал может я не один такой )

    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!