2009-01-28 10 views
16

Soy un novato Python, por lo toleradme :)¿Por qué recibo el siguiente error en Python "ImportError: Ningún módulo llamado py"?

he creado un archivo llamado test.py con el contenido de la siguiente manera:

test.py 
import sys 
print sys.platform 
print 2 ** 100 

entonces me encontré con import test.py archivo en el intérprete de seguir un ejemplo en mi libro. Cuando hago esto, obtengo el resultado con el error de importación al final.

win32 
1267650600228229401496703205376 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named py 

¿Por qué me sale este error y cómo lo soluciono? ¡Gracias!

Respuesta

36

En lugar de:

import test.py 

escribe simplemente:

import test 

Esto supone test.py está en el mismo directorio que el archivo que lo importa.

5

No especifica la extensión al importar. Sólo hacer:

import test 
2

Como han mencionado otros, no necesita poner la extensión de archivo en su instrucción de importación. La lectura recomendada es Modules section of the Python Tutorial.

Para obtener más información sobre el error, el intérprete piensa que está intentando importar un módulo llamado py desde el interior del paquete test, ya que el punto indica encapsulación. Debido a que no existe dicho módulo (y test isn't even a package!), Genera ese error.

Como se indica en el more in-depth documentation on the import statement todavía ejecuta todas las declaraciones contenidas en el módulo test antes de intentar importar el módulo py, por lo que se obtiene los valores impresos.

6

Este extraño error es el resultado de cómo Python importa módulos.

Python ve:

import test.py 

Python piensa (simplificado un poco):

import module test.

  • search for a test.py in the module search paths
  • execute test.py (where you get your output)
  • import 'test' as name into current namespace

import test.py

  • search for file test/py.py
  • throw ImportError (no module named 'py') found.

Debido pitón permite nombres de los módulos de puntos, sólo se piensa que tiene un submódulo llamado py dentro el módulo test, y traté de encontrarlo. No tiene idea de que está intentando importar un archivo.

+0

Creo que la terminología es técnicamente "* module * named' py' dentro del paquete 'test' * *". (¡Podría estar equivocado, sin embargo!) – cdleary

Cuestiones relacionadas