2009-01-28 5 views
16

Je suis un débutant Python, donc avec moi :) porterasPourquoi ai-je l'erreur suivante dans Python "ImportError: No module named py"?

J'ai créé un fichier appelé test.py avec le contenu comme suit:

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

J'ai alors couru fichier import test.py dans l'interpréteur à suivre un exemple dans mon livre. Lorsque je fais cela, je reçois la sortie avec l'erreur d'importation à la fin.

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

Pourquoi ai-je cette erreur et comment puis-je résoudre ce problème? Merci!

Répondre

36

Au lieu de:

import test.py 

simplement écrire:

import test 

Cela suppose test.py est dans le même répertoire que le fichier qui l'importe.

5

Vous ne spécifiez pas l'extension lors de l'importation. Il suffit de faire:

import test 
2

Comme d'autres l'ont mentionné, vous n'avez pas besoin de placer l'extension de fichier dans votre instruction d'importation. La lecture recommandée est la Modules section of the Python Tutorial. Pour plus d'informations sur l'erreur, l'interpréteur pense que vous essayez d'importer un module nommé py depuis l'intérieur du package test, car le point indique l'encapsulation. Parce qu'un tel module n'existe pas (et test isn't even a package!), Il déclenche cette erreur.

Comme indiqué dans le more in-depth documentation on the import statement il exécute encore toutes les déclarations contenues dans le module test avant de tenter d'importer le module py, qui est la raison pour laquelle vous obtenez les valeurs imprimées.

6

Cette erreur d'apparence étrange est le résultat de l'importation de modules par Python.

Python voit:

import test.py 

Python pense (un peu simplifié):

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.

Parce que python permet des noms de modules pointés, il pense juste que vous avez un sous-module nommé py au sein le module test, et a essayé de trouver cela. Il n'a aucune idée que vous essayez d'importer un fichier.

+0

Je pense que la terminologie est techniquement "* module * nommé" py "dans le paquet' test' * * * ". (Peut-être tort, cependant!) – cdleary

Questions connexes