Найдите, какие модули Python импортируются

Что такое простой способ найти все модули Python от конкретного пакета, которые используются в приложении?

41
задан John Jiang 4 January 2010 в 04:01
поделиться

4 ответа

sys.modules - это имена модулей сопоставления словарей с модулями. Вы можете просмотреть его ключи, чтобы увидеть импортированные модули.

Смотрите: http://docs.python.org/library/sys.html#sys.modules

37
ответ дан 27 November 2019 в 00:39
поделиться

Я думаю, что modulefinder - это то, что вы ищете. Вы можете использовать modulefinder.py непосредственно, запустив его как скрипт, как описано там, или вы можете импортировать модуль и затем создать отчёт , используя класс modulefinder.moduleFinder.

.
1
ответ дан 27 November 2019 в 00:39
поделиться

Вы можете использовать python -v, который будет выдавать сообщения о каждом импортированном модуле:

$ echo 'print "hello world"' > helo.py
$ python -v helo.py
# installing zipimport hook
import zipimport # builtin
# installed zipimport hook
# /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site.pyc matches /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site.py
import site # precompiled from /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site.pyc
# /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/os.pyc matches /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/os.py
import os # precompiled from /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/os.pyc
import posix # builtin
# /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/posixpath.pyc matches /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/posixpath.py
import posixpath # precompiled from /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/posixpath.pyc

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

.
34
ответ дан 27 November 2019 в 00:39
поделиться

Настоящий простой метод заключается в удалении всех .pyc-файлов из пакета или папки, а затем запуске приложения. После того, как вы немного поиграете, сделайте список каталогов и посмотрите, какие файлы теперь содержат .pyc-файлы. Это модули, которые были импортированы приложением.

(Замечание: модуль __main__, который вы вызываете как "главный" скрипт, никогда не компилируется, так что вы не должны ожидать, что увидите для него .pyc-файл, если только что-то не импортировало его из приложения. Это часто является признаком проблемы, если она все-таки произойдет)

.
0
ответ дан 27 November 2019 в 00:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: