Python: список модулей (>>> справка («модули») не работает) - PullRequest
3 голосов
/ 31 марта 2010

Я хотел получить список своих модулей и мне сказали:

>>> help('modules')

Подойдет. Но я просто получаю

Пожалуйста, подождите, пока я соберу список всех доступных модулей ...

Более 10 минут, прежде чем я убил его.

Кто-нибудь знает, что может быть причиной этого? Или как я мог иначе увидеть мои модули? (Система Ubuntu 9.10 / Python 2.6.4)

Спасибо

Dan

Ответы [ 3 ]

5 голосов
/ 14 декабря 2015

help("modules") может занять много времени, потому что он должен импортировать каждый модуль, прежде чем сможет искать путь к этому модулю для подмодулей. Это может быть проблемой, если какой-либо модуль имеет код за пределами защиты if __name__ == "__main__":, и если этот код ожидает ввода данных пользователем, входит в бесконечный цикл или зависает по любой другой причине.

Под капотом help("modules") вызывает pkgutil.walk_packages, что демонстрирует вышеупомянутое поведение «импортировать все». В качестве альтернативы вы можете вызвать iter_modules, который не импортирует все, с недостатком только итерации модулей верхнего уровня.

>>> import pkgutil
>>> print [tup[1] for tup in pkgutil.iter_modules()]
['colorama', 'xlrd', 'BeautifulSoup', 'BeautifulSoupTests', '_ctypes', ...
#snip... 
..., 'pywin', 'win32ui', 'win32uiole']

Это также упустит некоторые встроенные модули, которые вы можете получить отдельно, используя sys.

>>> import sys
>>> sys.builtin_module_names
('__builtin__', '__main__', '_ast', '_bisect', '_codecs', ...
#snip...
..., 'thread', 'time', 'xxsubtype', 'zipimport', 'zlib')
2 голосов
/ 31 марта 2010

Если вы хотите увидеть, какие у вас есть модули import ed (прямо или косвенно),

>>> import sys
>>> print sys.modules

help('modules') - это все модули, которые доступны - то есть те, которые вы ** могли бы * импортировать, если хотите. У меня это не занимает столько времени, сколько у вас, но если вы установили достаточно расширений, у вас могут появиться тысячи или десятки тысяч «потенциальных» модулей, поэтому неудивительно, что это может занять немного время сбора этой информации.

1 голос
/ 31 марта 2010

Установить ipython

$ sudo apt-get install ipython

Затем запустите ipython и введите import <tab>, где - это клавиша табуляции

Если вы установили пакет python-pygraphviz, вы можете использовать

import pygraphviz
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...