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 :

Ajout un module à sa distribution Python


Sujet :

Python

  1. #1
    Membre chevronné

    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
    Points : 1 752
    Points
    1 752
    Par défaut Ajout un module à sa distribution Python
    Bonjour,
    je cherche un moyen simple d'ajouter des modules persos en pure Python à la distribution Python sur mon Mac, afin que ces modules soient vus comme faisant partie de mon installation Python pour pouvoir les importer facilement.

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Le plus logique est d'utiliser le module distutils avec un setup.py. Je ne suis pas familier de ces questions (ce module est épouvantablement compliqué...), mais intéressé à titre personnel, j'ai fait un exemple sous Windows. J'espère qu'il sera facile d'adapter sous Mac.

    Plaçons nous dans l'optique suivante: je gère un package dans mon home qui contient mes modules personnels, et je veux l'installer, au fur et à mesure de ses évolutions, dans le lib/site-packages de Python.

    Le répertoire dans lequel je gère mon package est organisé comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    modulesperso  <= le répertoire qui contient mon package
        __init__.py  <= fichier (éventuellement vide) qui "signe" le package
        monmodule.py  <= un module
        monmodule2.py <= un 2e module
        autresmodules  <= sous-répertoire du package
            __init__.py  <= fichier (éventuellement vide) qui "signe" le package
            monmodule3.py  <= un 3e module
    setup.py  <= le setup de configuration d'installation
    Le setup.py contient (version très simplifiée!):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    from distutils.core import setup
     
    setup (name="monmodule",
           version='1.0',
           packages =['modulesperso', 'modulesperso.autresmodules']
           )
    En console, on se place dans ce répertoire (au même niveau que setup.py), et on fait (avec un niveau de droit permettant l'installation):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    python setup.py install
    Et tout le répertoire 'modulesperso' est recopié dans lib\site-packages. Les répertoires et sous-répertoires (qui doivent être cités dans l'option 'packages=' ) sont créés si nécessaire. Et tous les scripts python sont compilés. Par contre, si une version précédente avait un module qui a disparu par la suite, celui-ci n'est pas supprimée du package: il faut peut-être ajouter au setup une opération de suppression avant la recopie.

    On peut alors utiliser le package comme n'importe quel package Python:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from modulesperso.monmodule2 import *
    Et à ma connaissance, il n'y a pas de fonction de désinstallation.

    Bien entendu, il faudra réinstaller lors des changements importants de version de Python entrainant un changement de son répertoire.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Bonjour

    Question Mac, pas de problème pour utiliser distutils et la façon de procéder indiquée par Tyrtamos. Je m'en sers régulièrement et ça fonctionne très bien.

    Par contre

    Citation Envoyé par rambc
    Bonjour,
    je cherche un moyen simple d'ajouter des modules persos en pure Python à la distribution Python sur mon Mac, afin que ces modules soient vus comme faisant partie de mon installation Python pour pouvoir les importer facilement
    Installer tes modules à l'endroit même où l'installation Python a été faite n'est pas la seule solution pour faire des imports simplissimes, même sous MacOS, avec distutils ou à la main.

    T'appuyer sur la variable PYTHONPATH marche parfaitement et évite, justement, d'aller "mettre son nez" dans l'installation standard.
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  4. #4
    Membre chevronné

    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
    Points : 1 752
    Points
    1 752
    Par défaut
    Merci pour ces deux réponses.

    Pour le PYTHONPATH, as-tu un mini exemple ?

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,
    sous OSX, ca devrait ressembler à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PYTHONPATH="/userX/pythoncode:$PYTHONPATH"
    export PYTHONPATH
    à inclure dans .bashrc ou autre.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Sous MacOSX, deux possibilités.

    Si tu lances toujours tes scripts depuis un Terminal, tu peux te contenter d'initialiser cette variable dans l'un des fichiers ... d'initialisation utilisé par le bash (comme .bash_profile (qui est d'ailleurs utilisé pour mettre à jour PATH quand on installe Python via un .dmg))

    tu y mets, par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export PYTHONPATH=/Users/rambc/rep_avec_mes_modules:/Volumes/mon_disque/rep_avec_d_autres_modules
    avec les chemins des répertoires dans lesquels tu places tes modules, séparés par ':' si besoin.

    Cette varirbale sera initialisée uniquement quand tu lances Terminal. Ca peut suffire mais si tu en as besoin dans des applis qui ne se lancent pas via le dit-Terminal, ça coince.

    Il faut alors créer si il n'existe pas encore, dans ton répertoire de login (la "maison" si tu ne connais pas trop les aspects Unix), un répertoire .MacOSX (attention au point initial) et y mettre un fichier "environment.plist" qui a cette tête là (je te recopie tel quel le mien) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    mac:~ pascal$ more .MacOSX/environment.plist
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
            <key>PYTHONPATH</key>
            <string>/Volumes/Kermit/PYWorkspace/GISPython/GISUtil:/Volumes/Kermit/PYWorkspace/GISPython/Shapefile:/Volumes/Kermit/PYWorkspace/GISPython/VPFReader:/Volumes/Kermit/PYWorkspace/GISPython/VMapReader:/Volumes/Kermit/PYWorkspace/GISPython/VMapUtil</string>
    </dict>
    </plist>

    PYTHONPATH sera alors initialisé au login mais sera accessible "partout", même si tu ne passes pas par le Terminal. Si tu le changes, il faut te déloguer puis te reloguer.


    Ca a peut-être l'air bizarre mais c'est très classique sous MacOSX.
    une page prise au hasard sous Google en recherchant "MacOSX environment.plist"
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  7. #7
    Membre chevronné

    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
    Points : 1 752
    Points
    1 752
    Par défaut
    Merci pour ces explications !

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 14/10/2010, 15h11
  2. pb d'ajout du module XML-Writer
    Par peppena dans le forum Modules
    Réponses: 4
    Dernier message: 04/05/2006, 18h10
  3. [Langage] Ajout de modules : quelle techno ?
    Par vulquin dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 04/05/2006, 16h33
  4. [LDAP] comment ajouter un module PHP
    Par sezar dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 20/03/2006, 17h45
  5. module .so pour python... ?!
    Par totoetlititi dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 09/03/2004, 14h51

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