Panoptisch сканирует ваш файл или модуль Python, чтобы найти его импорт (он же зависимости) и рекурсивно делает это для всех зависимостей и подзависимостей. Затем он генерирует дерево зависимостей в JSON для вас, чтобы проанализировать и обеспечить политику импорта. Импорт разрешается путем подмадения системы импорта Python. Он полностью статичен, помимо импорта модулей, чтобы найти местоположение исходных файлов. Panoptisch также имеет минимальную песочницу для предотвращения побочных эффектов при импорте зависимостей. Обратите внимание, что песочница не надежна!
На этом этапе есть известные ограничения и проблемы . Пожалуйста, прочитайте это перед использованием Panoptisch.
См.: LIMITATIONS.md MD Ссылка.
Я не смог найти надлежащий сканер зависимостей для Python. Panoptisch родился из -за необходимости точно проверить использование зависимостей в целом проект.
Цель состоит в том, чтобы создать отчет JSON, который может быть проанализирован и оценен, чтобы утверждать политику импорта .
Например, вы можете ограничить импорт os , socket , sys и importlib на выбранные пакеты.
Panoptisch в той же виртуальной среде, что и ваш проект, это важно! pip install panoptisch
usage: panoptisch <module>
positional arguments:
module Name of module or file you wish to scan.
options:
-h, --help show this help message and exit.
--show-stdlib-dir Prints the automatically resolved stdlib directory.
--max-depth MAX_DEPTH
Maximum dependency depth.
--out OUT File to output report.
--auto-stdlib-dir Ignore stdlib modules by automatically resolving their path. MAY BE BUGGY. Try running panoptisch <module_name> --show-stdlib-dir to see the directory before using this.
--stdlib-dir STDLIB_DIR Ignore stdlib modules by providing their path.
--omit-not-found Do not include modules that could not be resolved in report.
--no-sandbox Ignore the minimal sandbox implementation.
Типичный пробег может быть
$ panoptisch <module or file> --max-depth 5 --omit-not-found
$ more out.json
--show-stdlib-dir чтобы увидеть, может ли Panoptisch автоматически разрешить ваш стандартный библиотечный каталог, обычно /usr/local/lib/python3.x Local/lib/python3.x на установках Linux. Тогда вы можете исключить его, используя $ panoptisch <module or file> --auto-stdlib-dir
Если Panoptisch не может автоматически разрешить ваш стандартный библиотечный каталог, вы можете найти его самостоятельно и предоставить его как аргумент для stdlib-dir
$ panoptisch <module or file> --stdlib-dir /the/path/to/your/standardlibrary/
Вся работа лицензирована в соответствии с общедоступной лицензией GNU, версии 3.
Обратная связь, взносы и проблемы приветствуются.