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.
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.
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:
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
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
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
1
2
3
4
5
6 from distutils.core import setup setup (name="monmodule", version='1.0', packages =['modulesperso', 'modulesperso.autresmodules'] )
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part python setup.py install
On peut alors utiliser le package comme n'importe quel package Python:
Et à ma connaissance, il n'y a pas de fonction de désinstallation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part from modulesperso.monmodule2 import *
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
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
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.Envoyé par rambc
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 !
Merci pour ces deux réponses.
Pour le PYTHONPATH, as-tu un mini exemple ?
Salut,
sous OSX, ca devrait ressembler à:
à inclure dans .bashrc ou autre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2PYTHONPATH="/userX/pythoncode:$PYTHONPATH" export PYTHONPATH
- W
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
avec les chemins des répertoires dans lesquels tu places tes modules, séparés par ':' si besoin.
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
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 !
Merci pour ces explications !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager