+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    Inscrit en
    avril 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : avril 2010
    Messages : 11
    Points : 0
    Points
    0

    Par défaut Importation relative impossible

    Bonjour. J'essaie d'importer de façon relative, par exemple pour utiliser du code des fichier1 ou fichier2 depuis le fichier3.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    dossier1/       
          __init__.py               
          fichier1.py
          dossier2/                  
                  __init__.py
                  fichier2.py
          dossier3/                  
                  __init__.py
                  fichier3.py
    Mais cela ne fonctionne absolument pas ! J'obtiens ce genre d'erreur :
    system error: parent module " not loaded, cannot performe relative import
    J'ai pourtant l'impression d'avoir suivi la documentation : http://docs.python.org/3/tutorial/mo...age-references

    En fouillant sur internet j'ai trouvé des choses à ce sujet mais, honnêtement, je n'y comprend rien. Est-il possible oui ou non d'importer comme le dit la documentation ? Sinon quelle alternative choisir ? Mettre tous mes fichiers dans le même dossier ?

    (note : je n'ai aucun problème pour importer depuis 2 ou 3 vers 1)

  2. #2
    Expert Confirmé

    Homme Profil pro
    Inscrit en
    octobre 2008
    Messages
    2 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2008
    Messages : 2 309
    Points : 3 528
    Points
    3 528

    Par défaut

    Salut,

    Pourquoi parles-tu d'import relatif ?

    Que ce soit sous Python 2 ou 3, si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    from dossier2.fichier2 import Foo
    dans fichier3 ça fonctionne sans problème.

    Exactement comme je ferai dans n'importe quel module du dossier root.

  3. #3
    Invité de passage
    Inscrit en
    avril 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : avril 2010
    Messages : 11
    Points : 0
    Points
    0

    Par défaut

    Import relatif: "donner le chemin par rapport au répertoire du fichier " ? Mais j'ai peut-être mal compris.

    Malheureusement j'obtiens l'exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ImportError: No module named 'dossier2'
    Même en copie/collant le fichier depuis le dossier root où l'importation fonctionnait.


    Edit :

    Ah ! Je pense avoir compris ! En fait j'essayais d’exécuter fichier3 directement, c'est ça qui ne fonctionne pas.
    Par contre si j'importe fichier3 dans fichier1 et que fichier3 utilise fichier2 là ça marche.