IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Import relatif, Package


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Par défaut Import relatif, Package
    Bonjour,

    Voici mon problème: je travaille sous eclipse/pydev avec l'architecture de fichiers suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    - src/
       __init__.py
       - debugBreak/
             __init__.py
       - root/
            __init__.py
            - package/
                 module.py
                 __init__.py
    module.py fait
    debugBreak/__init__.py contient un peu de code

    Je lance le fichier module.py en tant que main sous Ecclipse et tout se passe très bien. Si maintenant j'essaye d'éxecuter directement le script sans Ecclipse, l'import échoue.

    J'ai essayé de mettre des __init__.py dans tous les répértoires de l'arborescence, sans réussir à éxécuter module.py

    J'aimerais éviter de modifier PYTHONPATH pendant l'éxécution

    Avez- vous une idée du problème ?
    Merci d'avance

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    Bonsoir,

    voilà une arborescence qui devrait fonctionner:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    - src/
        main.py
        - top
           __init__.py
           - debugBreak/
               __init__.py
           - root/
               __init__.py
               - package/
                   module.py
                   __init__.py
    avec module.py

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    import top.debugBreak
    def main():
        pass
    mais, module.py ne doit pas être utilisé comme main. Utilise main.py plutôt:

    main.py:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    from top.root.package.module import main
    main()
    c'est un exemple parmi tant d'autres

    si ça t'embête d'avoir un main.py, utilise les entry points que propose setuptools.

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 752
    Par défaut
    Salut,

    Je ne vois pas vu votre arborescence comment trouver "debugBreak" depuis "module". essayez src.debugBreak ?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre Expert
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Par défaut ok
    Bonsoir,

    Merci bcp à tous les deux.

    Ca marche effectivement en déplacant mon fichier d'entrée au niveau du sommet de l'arborescence. Cette solution ne me dérange pas pour l'instant.

    Je me dis juste que c'est assez mal fichu. Entre autre, j'ai la chance d'avoir mis mes projets dans le mm workspace, mais si ce n'etait pas le cas, comment aurais-je pu faire ?

    @wiztricks: import src.debugBreak ne marche pas, ni sous eclipse ni en mode script.
    @kango: je n'arrive pas à trouver une doc claire et concise pour débuter avec setuptools, saurais tu ou je peux en trouver ?

    Sinon, je me demandais s'il etait possible de récupérer les informations que stocke Eclipse (puisqu'il arrive à importer ce qu'il faut) depuis Python pour imiter la manière dont eclipse va gérer le path ?

  5. #5
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    salut,

    je pense qu'eclipse passe par PYTHONPATH, la variable d'environnement.

Discussions similaires

  1. probleme avec l'importation du package netscape.javascript
    Par Jérémy Lefevre dans le forum Applets
    Réponses: 1
    Dernier message: 23/05/2007, 11h52
  2. [CLASSPATH] Impossible d'importer des packages
    Par NoiBe dans le forum NetBeans
    Réponses: 3
    Dernier message: 21/12/2006, 18h18
  3. Réponses: 3
    Dernier message: 13/05/2006, 18h31
  4. [Débutant(e)]importer un package
    Par jazzy59 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 27/01/2005, 14h36
  5. [Débutant] Comment faire un import de package ?
    Par MASSAKA dans le forum Eclipse Java
    Réponses: 8
    Dernier message: 07/05/2004, 09h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo