72 votes

Importation d'une classe à partir d'un autre fichier

Avant de le marquer comme dupliqué Veuillez lire mon problème :

J'essaie d'importer une classe à partir d'un fichier situé dans un sous-répertoire.

> main.py
> --->folder/
> ----->file.py

et en file.py j'ai une classe implémentée ( Klasa ) Ce que j'ai essayé :

en mettant dans main.py :

from folder import file
from file import Klasa

Je reçois l'erreur :

à partir du fichier, importer Klasa

ImportError : Aucun module nommé 'file'.

Quand j'essaie d'utiliser seulement :

from folder import file

Je reçois cette erreur :

tmp = Klasa()

NameError : Le nom 'Klasa' n'est pas défini.

J'ai mis un vide __init__.py dans le sous-dossier et ça ne fonctionne toujours pas, et j'ai mis dans le __init__.py : from file import Klasa et ça ne marche toujours pas.

Si le principal et le fichier sont dans le même dossier, cela fonctionne :

from file import Klasa

mais je veux qu'ils soient dans des fichiers séparés.

Quelqu'un peut-il me dire ce que je fais mal ?

152voto

Right leg Points 7921

Votre problème est essentiellement que vous n'avez jamais spécifié le bon chemin d'accès au fichier.

Essayez plutôt, depuis votre script principal :

from folder.file import Klasa

Ou, avec from folder import file :

from folder import file
k = file.Klasa()

Ou encore :

import folder.file as myModule
k = myModule.Klasa()

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