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 :

merge de 2 applications python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Par défaut merge de 2 applications python
    Bonjour,
    J'ais 2 applis python placées sous le même dossier parent. Ces applis étaient lancées séparément. A présent, je veux que l'appli A lance les fonctions de l'appli B.
    Il faut que je fasse les imports des modules de l'appli B à partir de l'appli A, mais les applis étant au même niveau la syntaxe :
    from ../AppliB/main import *
    ne marche pas. Un path absolu non plus.
    Si je modifie le PYTHONPATH pour remonter au parent commun, je vais être obligé de modifier toutes les lignes de code de l'appli A et l'appli B ou se font les import, non ?
    Merci

  2. #2
    Membre éprouvé Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Par défaut
    J'ai trouvé une solution qui est de faire connaitre l'appli B dans l'appli A, via un lien symbolique. C'est plus facile que je pensais.
    A présent, j'ai la situation suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    >echo $PYTHONPATH
       /rsynergy/ccm_wa/AppliA-v1/AppliA/
     
    >pwd
       /rsynergy/ccm_wa/AppliA-v1/AppliA/
     
    >ls -l
       Include
       HMI
       AppliB -> /rsynergy/ccm_wa/AppliB-v0/AppliB/
     
    >ls -l /rsynergy/ccm_wa/AppliB-v0/AppliB/
       Include
       HMI
    SI je teste mes imports via une session python :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    python
    >>>import Include.constantsA
    >>>
    >>>import NEDI.Include.constantsB
    Traceback ....
    ImportError : No module named NEDI.Include.constantsB
    alors que ce fichier existe bien à l'endroit désigné : je modifie le sys.path :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>>import sys
    >>>sys.path
    ['','/rsynergy/ccm_wa/AppliA-v1/AppliA/', ...]
    >>>sys.path.append(/rsynergy/ccm_wa/AppliA-v1/AppliA/AppliB/Include)
    >>>import constantsB
    >>>
    Pourquoi le "import NEDI.Include.constantsB" ne marche t'il pas alors qu'en modifiant le sys.path, on accède à constantsB ? Est ce du au lien symbolique que ne saurait pas interpréter python ?
    Merci

  3. #3
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Pourquoi ne pas simplement modifier le sys.path dans A pour y ajouter un chemin (relatif ou absolu) vers B*? Normalement, ça marche très bien…

  4. #4
    Membre éprouvé Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Par défaut
    En effet, pourquoi pas. Je me demandais simplement pourquoi le chemin mis dans l'instruction import : "import NEDI.Include.constantsB" ne marchait pas.

  5. #5
    Membre éprouvé Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Par défaut
    mais il va y avoir des conflits de noms : si j'ai dans le sys.path :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ['','/rsynergy/ccm_wa/AppliA-v1/AppliA/','/rsynergy/ccm_wa/AppliB-v0/AppliB/', ...]
    comment distinguer des modules dont le chemin et le nom du module lui même existent dans les deux appli A et B.
    Par exemple ces deux fichiers existent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /rsynergy/ccm_wa/AppliA-v1/AppliA/Include/config.py
    /rsynergy/ccm_wa/AppliB-v0/AppliB/Include/config.py
    Merci

  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
    Bonjour.

    J'ai passé trop de temps à jouer avec des imports relatifs. Une vraie galère !...

    J'utilise maintenant distutils pour avoir mes projets dans ma distribution locale. Ceci peut être une piste à explorer si ton projet le permet.

  7. #7
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    En faisant de AppliB un module (suffit de rajouter dans le dossier un fichier __init__.py), tu peux faire import AppliB.foo.bar, et plus de problème de collision, non*?

Discussions similaires

  1. Installation application/python 2.6.6 problème lib
    Par ben.IT dans le forum Applications et environnements graphiques
    Réponses: 5
    Dernier message: 30/05/2011, 10h13
  2. Distribution d'une application Python
    Par zelegolas2 dans le forum Général Python
    Réponses: 6
    Dernier message: 03/05/2011, 13h59
  3. Refaire une application Python sous Django
    Par Jiyuu dans le forum Django
    Réponses: 3
    Dernier message: 04/04/2009, 15h15
  4. repise d'une application python
    Par spinakur dans le forum Django
    Réponses: 3
    Dernier message: 24/12/2008, 09h32
  5. Internationnalisation d'une application Python
    Par leviathan516 dans le forum Général Python
    Réponses: 1
    Dernier message: 22/03/2006, 14h48

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