561 votes

python ImportError Aucun module nommé

Je suis très nouveau à python et j'obtiens cette erreur:

Traceback (most recent call last):
  File "mountain.py", line 28, in ?
    from toolkit.interface import interface
ImportError: No module named toolkit.interface

Python est installé dans un répertoire local:

Mon arborescence de répertoire est comme ceci:

(local directory)/site-packages/toolkit/interface.py

Mon code est ici

(local directory)/site-packages/toolkit/examples/mountain.py

Pour exécuter l'exemple, je n' python mountain.py, et dans le code que j'ai:

from toolkit.interface import interface

Et je reçois le message d'erreur que j'ai écrit, j'ai déjà vérifié l' sys.path et de la sys.path j'ai le répertoire /site-packages, j'ai aussi le fichier __init__.py.bin dans la boîte à outils de dossier pour indiquer à python que c'est un package. J'ai aussi un __init__.py.bin dans les exemples du répertoire.

Je ne pas pourquoi Python ne peut pas trouver le fichier lorsque est dans le sys.chemin d'accès, des idées? Peut être un problème de permissions? Ai-je besoin de permission d'exécution?

310voto

John Fouhy Points 14700

En fonction de vos commentaires à orip post, je suppose que c'est ce qui s'est passé:

  1. Vous avez édité __init__.py sur windows.
  2. Les fenêtres de l'éditeur a ajouté quelque chose de non-impression, peut-être un retour de chariot (fin de ligne dans Windows est CR/LF; sous unix, il est LF uniquement), ou peut-être un CTRL-Z (windows fin de fichier).
  3. Vous avez utilisé WinSCP pour copier le fichier sur votre zone d'unix.
  4. WinSCP pensé: "C'est quelque chose qui n'est pas le texte de base; je vais mettre un .bin extension pour indiquer des données binaires."
  5. Le manque __init__.py "(maintenant appelés __init__.py.bin) signifie que python ne pas comprendre trousse d'outils comme un paquet.
  6. Vous créez __init__.py dans le répertoire approprié et tout fonctionne... ?

86voto

igorgue Points 2961

Est-ce que

 (local directory)/site-packages/toolkit
 

avoir un __init__.py ?

Pour que l'importation défile dans vos répertoires, chaque répertoire doit avoir un fichier __init__.py .

42voto

Renaud Points 3226

Sur * nix, assurez-vous également que PYTHONPATH est configuré correctement, surtout qu'il a le format

  .:/usr/local/lib/python 
 

(attention au.: au début, pour qu'il puisse aussi chercher dans le répertoire courant)

23voto

Eduardo Points 2329

maintenant, le problème est résolu, je vais écrire un résumé des choses qui ont été grong et la solution:

Le fichier doit être appelés __init__.py, exactement ce que, si l'extension est différent, comme mon cas .py.bin puis de python ne peuvent pas se déplacer à travers les répertoires et puis il ne peut pas trouver les modules. Pour modifier les fichiers, vous devez utiliser un linux de l'éditeur, tel que vi, nano..., si vous utilisez un éditeur windows cela permettra d'écrire quelques personnages cachés.

Un autre problème qui affectait était que j'avais une autre version de python installée par la racine, donc si quelqu'un travaille avec une prestation d'installation de python, assurez-vous que le python qui est en cours d'exécution des programmes au niveau local est le python, à les vérifier il suffit de ne which python, et de voir si l'exécutable est celui qui est dans votre répertoire local. Si pas de modifier le chemin d'accès, mais assurez-vous que le local python répertoire est avant que l'autre python.

Merci à tous pour l'aide

18voto

orip Points 28225

Pour marquer un répertoire comme un paquet vous avez besoin d'un fichier nommé __init__.py , est-ce que cela aide?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X