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 :

Python 3 et les import


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut Python 3 et les import
    Bonjour,
    voici une arborescence que j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    doc_tools
        + checkOptionColor.py
        + defaultColor.py
        + optionsBlock.py
    Dans optionsBlock.py, il y a l'import suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from . import checkOptionColor
    Dans checkOptionColor.py, il y a l'import suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from . import defaultColor
    En l'état cela fonctionne mais je ne peux plus travailler directement avec checkOptionColor.py pour par exemple faire des tests.

    Je me doute que je m'y prends mal au niveau de la structure de mon code mais pour le moment je laisse de côté la restructuration des modules, car une fois mon projet fini j'étudierais un peu mieux QUOI utilise QUOI.

    Mon problème serait de savoir quoi changer pour pouvoir utiliser checkOptionColor.py tout seul.

    Quelles sont les bonnes pratiques à avoir en Python 3 pour les import ? Je précise que les horreurs que j'utilise pour le moment se sont imposées à moi lors du passage à Python 3.

    Toute info. est la bienvenue.

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour rambc,

    Tu vas sans aucun doute avoir des réponses plus pro mais à mon niveau (autodidacte-épicurien, c'est dire...) j'ai pris pour habitude d'inclure un if __name__ == "__main__" et de calquer l'appelant sur celui ci.

    Ceci dit je n'ai sans doute pas compris ta question vis à vis des imports sous Python 3 (il y as des changements la aussi ?) puisque je n'arrive pas a me résoudre à passer le pas

    Bon code

  3. #3
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Citation Envoyé par PauseKawa Voir le message
    Tu vas sans aucun doute avoir des réponses plus pro mais à mon niveau (autodidacte-épicurien, c'est dire...)
    Je suis autodidacte moi aussi mais pas trop épicurien. Je programme des choses pour me faciliter la tache.

    Citation Envoyé par PauseKawa Voir le message
    j'ai pris pour habitude d'inclure un if __name__ == "__main__" et de calquer l'appelant sur celui ci.
    On est d'accord, un code "moche" comme celui ci-dessous marche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if __name__ == '__main__':
        import defaultColors
    else:
        from . import defaultColors
    Avec Python 2, il suffisait de faire :
    Citation Envoyé par PauseKawa Voir le message
    ... je n'arrive pas a me résoudre à passer le pas
    Je ne sais pas si c'est un défaut de Python 3 ou bien si cela reflète une mauvaise pratique. C'est le seul reproche que j'aurais à faire à Python 3, ou à ma façon de structurer mon projet.

  4. #4
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Il semblerait que mon problème n'ait pas de solution autre que de mieux structurer mon code d'après ceci.

    Faut-il à chaque fois créer un module pour ne pas importer des fichiers Python seuls directement ?

    Toute info ou bonne pratique est bienvenue.

  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
    bonjour,

    doc_tools est un package python ?

    si oui, que donne un import comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import doc_tools.defaultColors
    et si doc_tools est lui même un sous-package de appli:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import appli.doc_tools.defaultColors

  6. #6
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Citation Envoyé par kango Voir le message
    doc_tools est un package python ?
    Non. Certains de mes fichiers ne font pas partie du module doc_tools, ie ne sont pas dans __init__.py. Les complications doivent venir de là.

    En fait je n'avais pas besoin d'avoir accès à certaines méthodes, donc certains fichiers Python ne faisaient pas partie des modules bien qu'utilisés à l'intérieur du dossier.

    Cela ne doit pas être une bonne pratique. Je pense que je vais tout mettre dans des modules, y compris les fichiers Python secondaires.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question de debutant sur les Imports
    Par gibea00 dans le forum Framework .NET
    Réponses: 1
    Dernier message: 04/12/2006, 15h33
  2. Lister les imports d'un .class
    Par otsgd dans le forum Langage
    Réponses: 3
    Dernier message: 23/10/2006, 16h01
  3. Question sur les import
    Par zoullou dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2006, 21h37
  4. Prendre que les 5 premiers enregistrements (les + important)
    Par __fabrice dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/11/2005, 09h24
  5. [Plugin] Factoriser les import (gestion des import)
    Par Oliveuh dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 08/07/2004, 12h21

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