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 :

Voyager de packages en packages


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut Voyager de packages en packages
    Bonjour à tous,

    J'ai fait quelques recherches et n'ai points trouver une solution à mon problème.
    Je vous explique.

    J'ai un projet avec plusieurs packages.
    Et depuis le dossier racine je sais aller dans les module d'un ou l'autre package sans problème.
    Par contre, je ne sais pas comment faire pour pouvoir aller chercher un module depuis un packages vers un autre package.

    Exemple :

    Comment dois-je faire pour utiliser "audio.lsaudio" dans ui.Piste?

    D'avance merci

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Bonjour,

    la reponse est dans la .

    Il suffit d'ajouter le chemin du répertoire dans ton sys.path,
    dans ton cas, tu peux simplement récuperer le chemin du répertoire superieur puis faire ton import:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import os
    import sys
     
    current_path = os.path.dirname(__file__)
    sys.path.append(os.path.join(current_path, '..'))
     
    from audio import ls_audio

  3. #3
    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,

    je ne partage pas cet avis concernant la modification du sys.path, même si cela fonctionne, c'est "bidouille".

    je te propose de créer un paquet unique dans lequel tu mettras tous les paquets de ton appli. ensuite, tu pourras utiliser la méthode classique:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from tonpaquet.audio import ls_audio
    si le nom du paquet racine est tonpaquet.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 765
    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 765
    Par défaut
    et PYTHONPATH alors?
    moi je trouve que c'est super plus mieux...
    - W
    PS: Ah... Python voilà un langage d'irréductibles gaulois!
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut
    Citation Envoyé par kango Voir le message
    bonjour,

    je ne partage pas cet avis concernant la modification du sys.path, même si cela fonctionne, c'est "bidouille".

    je te propose de créer un paquet unique dans lequel tu mettras tous les paquets de ton appli. ensuite, tu pourras utiliser la méthode classique:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from tonpaquet.audio import ls_audio
    si le nom du paquet racine est ls_audio.

    Salut, excuse moi, mais je ne vois pas l'interet de ton code...
    A quoi sert de faire des packages si ces pour tout mettre dans 1 seul?
    Je suis au debut de mon projet, et je sais ce qui m'attends, et si je n'organise pas ca tout de suite ca va etre le bordel dans les fichiers...

    Ou alors, je n'ai pas bien saisi ce que tu me proposais

  6. #6
    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,

    il ne s'agit pas de tout mettre dans 1 seul package, mais d'avoir un package de tête, par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    src
    |-- foo
    |   |-- __init__.py
    |   |-- bar
    |   |   `-- __init__.py
    |   `-- gui
    |       `-- __init__.py
    `-- fooexe.py
    visiblement, ton projet est une appli, avec des scripts d'un côté et des packages de l'autre et pas une librairie multi-package. et quand bien même se serait une appli multi-packages,
    rien n'empêche d'avoir un paquet de tête (regarde comment est organisé scipy par exemple, c'est exactement la structure que je décris avec un paquet de tête (scipy) et des sous-paquets (optimize, stats, odr...).

    cette structure de paquet, prévue par distutils, te permettra de facilement packager et déployer ton installation. Et cela facilitera le travail des utilisateurs pour son installation.

    dans l'exemple que je donne, si tu as besoin d'accéder au module bar depuis le module gui:

    tu peux nommer tes paquets relativement par rapport au paquet de tête.

    La modification du sys.path et de la variable PYTHONPATH, je les réserve pour des cas particuliers comme:

    - j'ai installé des modules dans un répertoire non standard (bien que virtualenv permette très souvent de s'affranchir de ce cas là en mettant en oeuvre un environnement de dev et un environnement d'exploitation sur la même machine par exemple).

    ensuite, je préfère toujours modifier PYTHONPATH plutôt que toucher sys.path, comme wiztricks, je trouve ça plus propre.

    edit: il y avait une erreur dans mon message précédent , j'ai corrigé.

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut
    Ok ,
    Je n'avais donc pas bien saisis ton raisonement

    Cela me parait plus claire maintenant
    Et cela me parait surtout plus "propre" et j'aime ca :p

    Merci pour votre aide

Discussions similaires

  1. importer Package un package
    Par rolls dans le forum NetBeans
    Réponses: 1
    Dernier message: 07/10/2009, 13h13
  2. package de package et Source Folder
    Par floanne dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 20/02/2008, 09h51
  3. problème de package [SOS package ]
    Par stekomath dans le forum Langage
    Réponses: 3
    Dernier message: 14/01/2008, 17h45
  4. Package devC++
    Par Fl0r3nt dans le forum Dev-C++
    Réponses: 15
    Dernier message: 29/10/2003, 14h42
  5. Vue Packages
    Par ced dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 01/04/2003, 08h32

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