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 :

gestion du path


Sujet :

Python

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 406
    Points : 92
    Points
    92
    Par défaut gestion du path
    Bonjour je galère dans la gestion du path

    Comment dire à python que par défaut il doit rajouter le dossier /moi/trucmuche à son path (car j'y ai tous mes modules personnels).
    Comme je n'y arrivais pas par défaut j'ai commencé, suivant d'ailleurs quelques réponses de ce forum, à mettre ça dans chacun de mes programmes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import sys
    sys.path.insert(0, "/Users/moi/trucmuche")
    from modulequejeveux import *
    où modulequejeveux.py est un programme contenant les def perso que j'ai mises au point

    Ça marche super bien

    Mais si je pouvais me passer des trois premières lignes et ne garder que la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from modulequejeveux import *
    durablement, sans avoir plus jamais quoi que ce soit à faire à ce sujet, ça me ferait gagner du temps.
    Comment faire ?

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 282
    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 282
    Points : 36 769
    Points
    36 769
    Par défaut
    Salut,

    Citation Envoyé par elodouwen Voir le message
    Comment dire à python que par défaut il doit rajouter le dossier /moi/trucmuche à son path (car j'y ai tous mes modules personnels).
    La variable d'environnement PYTHONPATH permet aussi cela.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Si modulequejeveux.py est dans le même dossier que le script que tu lances, tu n'as pas besoin d'ajouter quoi que ce soit au path.

    Si tu veux pouvoir utiliser ton module à partir de n'importe quel programme tu peux l'ajouter aux modules externes de python.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo cp modulequejeveux.py /usr/lib/python3/dist-packages/
    en rectifiant le chemin de python selon ta config bien sur.

  4. #4
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 406
    Points : 92
    Points
    92
    Par défaut
    salut à vous deux et merci déjà d'avoir répondu

    Après quelques recherches, j'ai tapé ça dans le terminal de mac os X :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export PYTHONPATH=$PYTHONPATH:/Users/moi/trucmuche
    Curieusement, quand je fais
    il ne m'affiche que /Users/moi/trucmuche et non pas les autres dossiers standards.
    Curieux aussi, dans toute cette manip, je ne précise pas de quelle version de Python il s'agit, comment alors cela pourrait-il marcher ?
    Et de fait ça ne marche pas, j'ai fait un programme placé n'importe où sur mon disque dur et contenant simplement :
    il ne connaît pas "bezout" alors que bezout.py est dans /Users/moi/trucmuche/

    Ensuite, si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo cp modulequejeveux.py /usr/lib/python3/dist-packages/
    du peu de bash que je comprend ça va me copier la version actuelle de modulequejeveux.py dans un "bon" dossier mais ça ne va pas pointer $PYTHONPATH vers /Users/moi/trucmuche/.
    Or, l'idée pour moi serait de mettre tous mes modules dans /Users/moi/trucmuche/ sasn me soucier de devoir les copier ensuite un par un ;
    sinon, autant me créer sur le bureau un raccourci de /usr/lib/python3/dist-packages/ et d'y travailler mes modules directement, non ?

    PS je précise aussi que dans le passé j'ai modifié ~/.bashrc et j'y ai mis ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export PYTHONPATH=$PYTHONPATH:/Users/moi/trucmuche
    D'ailleurs, ce fichier ~/.bashrc ne contient que ça. J'ai l'impression d'un souci d'emplacement, peut-être que Python ne s'attend pas à ce que .bashrc soit là ?

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Points : 446
    Points
    446
    Par défaut
    Bonjour,

    D'une manière ou d'une autre, il te faut indiquer à Python où chercher les modules.
    Par défaut, il va regarder dans son répertoire d'installation ou dans l’environnement virtuel activé.
    Si tes modules ne sont pas dans ces répertoires là, il te faut le lui dire. C'est ce que tu fais de façon programmatique. Tu pourrais aussi mettre ce(s) répertoire(s) dans le PYTHONPATH.
    Une petite recherche là-dessus devrait te permettre d'arriver à tes fins.

    Réponse tardive C'est ça d'ouvrir plusieurs fils d'un coup, de partir boire un café et d'y répondre ensuite
    Il est agréable d'avoir le choix. La difficulté est alors de faire le bon (ou le moins pire).

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 282
    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 282
    Points : 36 769
    Points
    36 769
    Par défaut
    Salut,

    Citation Envoyé par elodouwen Voir le message
    Après quelques recherches, j'ai tapé ça dans le terminal de mac os X :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export PYTHONPATH=$PYTHONPATH:/Users/moi/trucmuche
    Curieusement, quand je fais
    il ne m'affiche que /Users/moi/trucmuche et non pas les autres dossiers standards.
    L'export fait juste un append du répertoire au contenu précédent de PYTHONPATH. Si la variable n'était pas définie "avant", çà n'affiche que le répertoire que vous y avez ajouté.
    Pour le reste, c'est documenté donc çà devrait fonctionner (et çà fonctionne sur Windows et Linux mais je n'ai pas d'OSX pour essayer) sauf si vous vouez êtes planté quelque part (ou qu'il y ait un bug côté OSX mais un peu de recherche sur Internet en montrerait des traces).

    Citation Envoyé par elodouwen Voir le message
    Curieux aussi, dans toute cette manip, je ne précise pas de quelle version de Python il s'agit, comment alors cela pourrait-il marcher ?
    Si vous avez des répertoires différents pour python2, python3 et leurs variantes avec des incompatibilités, ce sera à vous de le gérer. Cà se contente d'ajouter un répertoire dans lequel chercher un module et çà ne fait pas le café.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Salut

    Une autre piste serait de rendre tes modules packageable. C'est à dire les rendre distribuable et installable comme n'importe quel autre package via pip.

    Pour cela tu va devoir te conformer à une certaine hierarchisation de tes modules et écrire un fichier setup.py (et crééer un fichier __init__.py, que tu pourras laisser vide, dans chaque dossier). Modulo ceci, après tu installes ton propre package en mode développeur (option -e, et là tu n'as pas copie de ta librairie dans le python path, mais un lien est inséré dans le python path, lien pointant vers ton répertoire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pip install -e ma_librairie
    et après de n'importe où tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from ma_librairie import etc
    L'avantage également là c'est que tu pourras facilement partager ce code avec d'autres personnes si besoin

Discussions similaires

  1. Gestion des Espaces dans les Paths
    Par thais781 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/02/2016, 10h03
  2. Gestion de paths vers un DD externe
    Par rambc dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 12/07/2010, 16h50
  3. Gestion du mouseover - Pb relative path
    Par Emilien69 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 01/02/2010, 21h08
  4. gestion de path
    Par Tony_ducrocq dans le forum Langage
    Réponses: 10
    Dernier message: 24/04/2009, 15h08
  5. gestion des fichiers app.path
    Par parcouri dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 09/08/2007, 16h31

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