2011-12-03 15 views
26

Me gustaría obtener una lista de los nombres de los módulos incorporados en python para que pueda probar la popularidad de las convenciones de nombres de función (subrayado, CamelCase o mixedCase).¿Cómo obtener una lista de módulos incorporados en python?

Yo sé que hay una Global Module Index pero estoy preguntando si hay una lista de cadenas, que es más fácil de usar :)

Actualización:

len(dir(__builtins__)) = 145 
len(stdlib_list("2.7")) = 430 
help('modules') = 508 # counting manually the output 
+7

Es posible que también desee comprobar [PEP8] (http://www.python.org/dev/peps/pep-0008/) y las Convenciones de nomenclatura –

+1

"subrayado" y "subrayado" son la misma cosa. Existen convenciones para el uso de '_name' y' __name__'. El número de funciones/métodos/nombres en la biblioteca incorporada que tiene caracteres en mayúsculas es infinitamente pequeño. ¿Cuál es tu objetivo? –

+0

Thx, Vincent. Me gusta poner mi mano en las funciones de los módulos incorporados para ver la situación actual de nombres :) – Drake

Respuesta

35

Los nombres de los módulos compilados están en sys.builtin_module_names. Para todos los módulos importables, vea pkgutil.iter_modules.

Ejecute estos en un virtualenv limpio para obtener (casi) solo los módulos que vienen con Python.


Tenga en cuenta que una “encuesta de popularidad” incluirá necesariamente módulos que utilizan edad, desalienta las convenciones de nomenclatura, ya que fueron escritos antes directrices actuales se pusieron en marcha, y no se puede cambiar porque es necesario ser compatible con versiones anteriores. Puede ser útil para algo, pero no para responder preguntas de las mejores prácticas, como "¿Cómo debo nombrar mis funciones?". Para eso, vea el PEP8, the Python style guide, especialmente la sección "Convenciones de nombres".

+0

Se ha agregado una nota inspirada en el comentario de @ VincentSavard sobre la pregunta. Gracias, Vincent. –

10

¿Qué tal esto? Sin embargo, esto se pone una lista de funciones y variables incorporadas en lugar de módulos ...

dir(__builtins__) 

help('modules') le dará una lista de todos los módulos, de acuerdo con How can I get a list of locally installed Python modules?. No una lista de cadenas, sin embargo.

4

>>>dir (__builtins__)

o

>>>help (__builtins__)

6

Ahora hay un paquete de 3 ª parte de este. Raspa la TOC de la página Biblioteca estándar en los documentos oficiales de Python y crea una lista.

puede instalarlo usando pip

pip install stdlib_list 

y consiguió obtener una lista de las bibliotecas

In [12]: from stdlib_list import stdlib_list 

In [13]: libraries = stdlib_list("3.5") 

In [14]: libraries[4:12] 
Out[14]: ['abc', 'aifc', 'argparse', 'array', 'ast', 'asynchat', 'asyncio', 'asyncore'] 

puede encontrar source code here.

+1

Esto es bastante sorprendente. Gracias por esta información. También puse el resultado (el número de paquetes por diferentes formas) en mi publicación original. – Drake

2

Desde el CPython`s docs:

Todos los módulos incorporados conocidos se enumeran en sys.builtin_module_names

Los nombres de los módulos en sys.builtin_module_names es actual only for used un intérprete de Python:

Una tupla de cadenas que dan los nombres de todos los módulos que se compilan en este intérprete de Python

Cada incorporado en el módulo use el cargador especial durante la importación: BuiltinImporter

In [65]: import itertools, sys, gc 

In [66]: itertools.__loader__, sys.__loader__, gc.__loader__ 
Out[66]: 
(_frozen_importlib.BuiltinImporter, 
_frozen_importlib.BuiltinImporter, 
_frozen_importlib.BuiltinImporter) 

En el Python 3 el número de módulos integrados ha aumentado ligeramente

$ python2.7 -c "import sys; print('Count built-in modules: %d' %len(sys.builtin_module_names)); print(sys.builtin_module_names)" 
Count built-in modules: 51 
('__builtin__', '__main__', '_ast', '_bisect', '_codecs', '_collections', '_functools', '_heapq', '_io', '_locale', '_md5', '_random', '_sha', '_sha256', '_sha512', '_socket', '_sre', '_struct', '_symtable', '_warnings', '_weakref', 'array', 'binascii', 'cPickle', 'cStringIO', 'cmath', 'datetime', 'errno', 'exceptions', 'fcntl', 'gc', 'grp', 'imp', 'itertools', 'marshal', 'math', 'operator', 'posix', 'pwd', 'select', 'signal', 'spwd', 'strop', 'sys', 'syslog', 'thread', 'time', 'unicodedata', 'xxsubtype', 'zipimport', 'zlib') 
$ python3.4 -c "import sys; print('Count built-in modules: %d' %len(sys.builtin_module_names)); print(sys.builtin_module_names)" 
Count built-in modules: 54 
('_ast', '_bisect', '_codecs', '_collections', '_datetime', '_elementtree', '_functools', '_heapq', '_imp', '_io', '_locale', '_md5', '_operator', '_pickle', '_posixsubprocess', '_random', '_sha1', '_sha256', '_sha512', '_socket', '_sre', '_stat', '_string', '_struct', '_symtable', '_thread', '_tracemalloc', '_warnings', '_weakref', 'array', 'atexit', 'binascii', 'builtins', 'errno', 'faulthandler', 'fcntl', 'gc', 'grp', 'itertools', 'marshal', 'math', 'posix', 'pwd', 'pyexpat', 'select', 'signal', 'spwd', 'sys', 'syslog', 'time', 'unicodedata', 'xxsubtype', 'zipimport', 'zlib') 

A medida que el CPython se implementa (primaria) en el lenguaje de programación C, por lo que no es fácil de encontrar, como ejemplo Localización sys Python`s módulo (basados ​​en this answer):

$ locate sysmodule | grep python 
/usr/include/python2.7/sysmodule.h 
/usr/include/python3.4m/sysmodule.h 
/usr/local/include/python3.5m/sysmodule.h 

Más información sobre cómo obtener una información sobre todos los módulos disponibles se la CPython, busque en mi respuesta here.

1

Se puede hacer utilizando el bloque de código dado a continuación y es la forma más efectiva según mi opinión.

import sys 
a = sys.builtin_module_names 
print(a) 

La última línea que se incluirá si desea imprimirlos. Aquí, a es una tupla y puede acceder a todas las funcionalidades de una tupla.

Puede echar un vistazo a sys.builtin_module_names para obtener más ayuda https://docs.python.org/3/library/sys.html

Cuestiones relacionadas