Suite à des réponses données à une question sur le Forum, je me suis rendu compte que beaucoup ne connaissent pas bien ou se font des fausses idées de Python sur Mac OS X.
Je passerai sous silence les habituels commentaires du genre Mac, c'est nul, je préfère Linux ou Windows, je déteste et autres joyeusetés pour me limiter à l'essentiel,de manière constructive:
J'ai un Mac et je veux travailler avec Python, comment puis-je faire ? Et je me fous que ce soit meilleur sur Linux ou Windows puisque je ne les utilise pas.
Un petit synthèse s'impose puisqu'il n'y en a pas sur le Forum. Je précise que je ne suis pas un développeur mais un scientifique qui utilise Python dans un environnement Mac OS X. Il n'y a rien de neuf ici car on peut tout trouver sur Internet quand on veut s'en donner la peine (les développeurs et les utilisateurs anglophones ou hispanophones de Python sur Mac sont de plus en plus nombreux). Je constate aussi que de plus en plus de modules scientifiques sont développés sur Mac OS X.
Une première chose fondamentale est pourtant:
Hormis si on le désire, il n'y a pas besoin d'installer Python sur Mac OS X puisqu'il est déjà présent
.
Le problème va néanmoins se poser si je désire installer une autre version, d'où cette petite présentation.
1) Rappels
Rappelons tout d'abord que Mac OS X, sous son interface « grand public », est un système Unix, tout comme Linux, mais basé sur un Unix BSD. En conséquence, il y a beaucoup de fichiers/dossiers Unix dans le système, mais ceux-ci sont masqués par défaut dans l'interface (Finder), par sécurité selon Apple. Si l'on ne fait rien, des dossiers comme usr ne seront jamais visibles. Pourtant, sous Unix, l’installation des librairies tierces se fait généralement dans les dossiers comme /usr et /usr/local. Il est donc important d'avoir accès à ces dossiers ou de les rendre visibles. Pour cela, il y a plusieurs solutions:
- Choisissez « Aller/Aller au dossier » dans le Finder et tapez /usr, par exemple;
- Par le Terminal:
1 2 3
|
defaults write com.apple.Finder AppleShowAllFiles TRUE
killal Finder |
et pour revenir à la normale
1 2 3
|
defaults write com.apple.Finder AppleShowAllFiles FALSE
killal Finder |
- ou par le choix d'afficher tous les fichiers/dossiers à l'aide d'utilitaires comme Onyx ou Avosmacs2Visibility. L'option est réversible .
2) Python, 64 bits et 32 bits
Comme c'est un Unix, plusieurs versions de Python sont préinstallées. Pour s'en rendre compte il suffit d'ouvrir le Terminal (dans /Utilitaires/) et de taper Python. Elles sont en 64 bits mais il y a moyen de le faire tourner en 32 bits si l'envie vous en prend, de même qu'il est possible de choisir la version que l'on désire utiliser, voir https://developer.apple.com/library/.../python.1.html pour montrer qu'il y a bien de la documentation sur le site d'Apple quand on cherche...
3) Vous n'êtes pas satisfaits des versions proposées et vous voudriez en installer une autre ?
Plusieurs solutions s'offrent alors à vous:
a) la manière préconisée par Apple: les Frameworks
La plus simple est de télécharger une des versions officielles de Python.org et de l'installer Ces versions sont livrées sous forme de Frameworks mais, c'est quoi un Framework ?
Pour faciliter le développement sous Mac OS X, ses concepteurs ont introduit la notion de Frameworks. Un Framework est un dossier contenant du code, des headers, de la documentation et d’éventuelles ressources supplémentaires. Il est ainsi possible d’installer des librairies dynamiques en ne manipulant qu’un seul objet, le Framework. Ils permettent de gérer plusieurs versions d'une librairie (mises à jour,etc.) avec des liens symboliques.
Les emplacements de ces Frameworks sont les dossiers Bibliothèque/Library (même si vous voyez Bibliothèque dans le Finder, ce sera Library dans le Terminal). Il y en a au moins trois:
- /Système/Bibliothèque/, réservé à Mac OS X et auquel il ne faut pas toucher;
- /Bibliothèque/, utilisable par les administrateurs et dont le contenu est destiné à être partagé par tous les utilisateurs;
- un dossier ̃/Bibliothèque/ par utilisateur qui peut y mettre ce qu'il veut.
La plupart des distributions de logiciels ou de librairies libres utilisent de plus en plus le système de Frameworks pour s'installer sur Mac OS X. Citons, entre autres, QT, GTK+, R, le Python de Python.org
Il est aussi utiliser ce qu'il y a dans un Framework comme dépendances pour compiler d'autres librairies ou applications(tout comme s'il était dans /usr/local/...).
b) les gestionnaires de paquets
Vous pouvez utiliser un Gestionnaires de paquets comme Synaptic sur Ubuntu, ou autres.
Vous leur indiquez ce que vous voulez installer et ils s'occupent de tout (installation des dépendances préalables, configuration et compilation). Au final, vous obtiendrez des exécutables semblables à ceux obtenus dans la première solution, mais dans d'autres dossiers. Ceux-ci sont:
- Fink qui est le système de gestion de paquets de la distribution Linux Debian porté sur Mac OS X. Il installe les programmes dans un dossier à la racine du disque: /sw/
soit à partir d'interfaces graphiques comme FinkCommander - MacPorts est un autre système qui installe aussi les programmes dans un dossier à la racine du disque: /opt/
sudo port -v install python27
soit à partir d'interfaces graphiques comme Porticus - Homebrew , le dernier venu et le plus prometteur d'après moi. Il installe les programmes dans /usr/local/Cellar avec des liens symboliques dans usr/local/bin.
Il faut alors rajouter dans le PATH, /sw/bin, /sw/lib, /sw/include ou la même chose pour /opt
- Le principal problème de Fink et de MacPorts, c'est que ce sont des usines à gaz: ils ne tiennent pas compte de ce qui est préalablement installé, installent tout dans leurs dossiers respectifs ce qui peut créer de réels problèmes dans la gestion des PATHs.
- Homebrew est plus « propre » (dans /usr/) et se base sur les librairies existantes, si elles sont à jour
c) Compiler les sources
Si le cœur vous en dit, vous pouvez compiler les sources. Pour cela, il vaut mieux installer les « Developper tools » disponible gratuitement. Ils offrent un IDE, XTools et une multitude d'éléments supplémentaires. En pratique, c'est long mais relativement facile. Il est possible de le faire sous une forme classique (résultats dans le dossier /usr/) ou sous forme de Framework.
4) Les modules
a) avec une installation classique
- Avec les versions de Python préinstallées ou la version officielle (Framework), cela se fait classiquement avec Pip, easy_install ou python setup.py install. Il existe de plus en plus des distributions propres à Mac OS X comme numpy, scipy, PyQt4, PySide, etc., ce qui fait qu'il n'y a pas besoin de les compiler soi même. Le seul qui posait problème était WxPython avec la version 64 bits de Python;
- Hormis rares exceptions, je n'ai jamais eu le moindre problème pour installer simplement un module, même les plus complexes comme ceux qui utilisent Fortran;
- si l'on veut une distribution scientifique de Python, il suffit d'installer la version OpenSource de Enthouht (EPD avec tous les modules nécessaires) en 32 ou 64 bits (aussi sous forme de Framework)
- il y a, bien entendu, des modules spécifiques à Mac OS X comme le module py2app qui permet de créer des applications (comme Pyexe sur Windows ou cxfreeze). Et donc ceux qui voudraient utiliser cxfreeze sur Mac OS X en seront pour leur frais et ils pourront dire qu'il n'y a rien sur Mac. Le problème est simplement que les utilisateurs Mac n'en ont pas besoin...
b) avec les gestionnaires de paquets,
Vous pouvez aussi le faire avec, par exemple:
port install py27-matplotlib py27-numpy py27-scipy py27-ipython
Ce qui est beaucoup moins « pythonesque » à mon avis.
5) Désinstallation d'une version de Python
Comment désinstaller quelque chose sur Mac ? Ça a l'air éminemment complexe pour certains et pourtant...
Il suffit de mettre l'objet dans la corbeille
- Si on a suivi les directives d'Apple (Frameworks etc., d'où leur intérêt) et si je veux supprimer l'entièreté d'une version de Python, je déplace le dossier Python 2.x dans la corbeille, et c'est tout. Il y aura peut être des chemins à supprimer dans votre fichier .bash_profile et peut être des liens symboliques dans /usr/bin/.
- Si je veux supprimer une version de Python installées par un gestionnaire de paquet, il offre généralement les moyens de le faire.
- le problème se posera éventuellement si l'on a choisi de le compiler soi-même sous une forme classique (multiples fichiers dans le dossier /usr/).
Compliqué, n'est ce pas ?
Attention, la seule chose à ne pas faire est de supprimer une des versions préinstallées.
6) Désinstallation ou mise à jour d'un module
- si vous avez choisi de le faire de la manière préconisée avec pip ou easy_install, c'est la même chose qu'avec Linux ou Windows
- si elles ont été installées par un gestionnaire de paquets, c'est le problème du gestionnaire, pas d'Apple
7) Conclusions
Et voila, j'espère avoir été clair.
Pour ma part, j'utilise exclusivement les versions préinstallées et les versions officielles de Python.org (Frameworks) qui respectent les principes préconisés par Apple. C'est beaucoup plus facile par la suite.
Lorsque quelque chose ne figure pas dans ces possibilités, je tente de les compiler par moi-même ou j'utilise Homebrew, beaucoup plus rapide et respectant mieux les caractéristiques de Mac OS X, et non Fink ou MacPorts, beaucoup plus lourds. Je ne comprends toujours pas bien pourquoi certains s'obstinent à utiliser ces deux derniers systèmes lorsqu'il existe une solution native.
Et ne faites surtout pas comme certains débutants qui installent tout n'importe comment et se retrouvent « Gros-Jean comme devant » : Python + Leopard + Fink + Mac Ports + Python.org + Idiot = broken Python - fresh start?
Bien entendu Python sur Mac OS X a de vrais défauts spécifiques, tout comme les versions pour Windows ou Linux et il serait peut être intéressant de les aborder réellement.
Et bien entendu aussi, les utilisateurs de Mac OS X sont souvent les grands oubliés, surtout dans le monde francophone: Linux pour les développeurs et Windows pour les utilisateurs, Mac OS X c'est beau et pas sérieux. Quand je vois dans le monde scientifique le nombre de plus en plus grand de personnes qui utilisent les macs, je me pose des questions.
Partager