donde esta el archivo ‘itertools’

import itertools print itertools#ok 

el código está bien

pero no puedo encontrar el archivo itertools

¿Quién puede decirme dónde está el ‘archivo itertools’?


mi código se ejecuta python2.5

 import itertools print itertools.__file__ Traceback (most recent call last): File "D:\zjm_code\mysite\zjmbooks\a.py", line 5, in  print itertools.__file__ AttributeError: 'module' object has no attribute '__file__' 

 >>> import itertools >>> itertools.__file__ '/usr/lib64/python2.6/lib-dynload/itertools.so' 

El hecho de que el nombre del archivo termine con .so significa que es un módulo de extensión escrito en C (en lugar de un módulo de Python normal). Si desea echar un vistazo al código fuente, descargue la fuente de Python y busque Modules/itertoolsmodule.c (también puede verlo en su navegador en http://svn.python.org/view/python/trunk/ Módulos / itertoolsmodule.c? View = log ).

Editar (como respuesta al comentario a continuación): también funciona con Python 2.5:

 Python 2.5.2 (r252:60911, Oct 5 2008, 19:29:17) [GCC 4.3.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import itertools >>> itertools.__file__ '/usr/lib/python2.5/lib-dynload/itertools.so' 

Si está buscando el archivo fuente (en C, por supuesto), aquí está, por ejemplo, en línea.

Para los usuarios de Windows (estoy ejecutando Python 2.7.2, Win7x64, paquete de instalación predeterminado) la llamada a __file__ se extinguirá como @ zjm1126 ha notado, sospecho que el problema es que itertools está itertools en el paquete de windows. Si hubieras elegido decir, ¿ exceptions ? Obtendría el mismo comportamiento en otra plataforma (p. Ej., Python 2.6.1 en mi macbook): Windows tiene algunas funciones más integradas, como itertools.

No es estrictamente una respuesta como tal, pero podría analizar sys.modules que le daría una pista sobre de dónde viene:

 >>> import sys >>> sys.modules['itertools']  

lo que apunta a la integración de itertools en tu ejecutable de python.

Además, la respuesta imp.find_module proporciona la misma información: la tupla de retorno extraña es por especificación (consulte: http://docs.python.org/2/library/imp.html#imp.find_module ) y le informa que El módulo es de tipo 6, que es la enumeración de imp.C_BUILTIN

prueba esto

 >>> import imp >>> imp.find_module("itertools") 

actualización: ya que el tuyo es Ninguno, otro pasa de forma manual. Hacer un sys.path

 >>> import sys >>> sys.path ['', '/usr/lib/python2.6/lib-dynload' ] 

luego, dependiendo de su sistema, use la función de búsqueda de su sistema para encontrarlo. en mi sistema linux

 $ find /usr/lib/python2.6/lib-dynload -type f -iname "*itertools*" /usr/lib/python2.6/lib-dynload/itertoolsmodule.so 

O, simplemente busque en el sistema el archivo con el nombre ” itertools “.