2010-03-31 3 views
3

Я хотел список моих модулей и сказал:Python: Список модулей (>>> помощи («модули») не работает)

>>> help('modules') 

сделать бы трюк. Но я просто получить

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

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

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

Спасибо,

Dan

ответ

1

Установите IPython

$ sudo apt-get install ipython 

Затем запустите IPython и введите import <tab> где < вкладка> вкладка ключ

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

import pygraphviz 
+0

Удивительный! Вы также можете увидеть все элементы в классе, используя это. Благодаря! – Dan

1

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

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

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

+0

Я в основном пытаюсь найти список, чтобы я мог увидеть имя моего недавно установленного модуля graphviz, который не видит ни одного из имен, которые я пробовал. – Dan

3

help("modules") может занять много времени, поскольку он должен импортировать каждый модуль до того, как я t может искать путь этого модуля для подмодулей. Это может быть проблемой, если какой-либо модуль имеет код за пределами защитного устройства 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') 
Смежные вопросы