Yves, le 25.04.10

Développer une application autonome sur Mac OS X 10.6

Attention, une version plus récente de ce document est disponible: Développer une application autonome sur OS X 10.9

Cet article est destiné aux développeurs et décrit la procédure pour obtenir une application autonome de Pyromaths sur Mac OS X à partir du code source.

Avec PyQt, il est possible de réaliser des programmes multi-plateformes. Cependant, le programme obtenu est un script Python qui nécessite la présence de Python, de PyQt et d’autres librairies et ne ressemble donc pas tout à fait à une application native du système. Avec py2app, il est possible d’obtenir une véritable application autonome sur Mac OS X à partir du programme réalisé avec PyQt.

Prérequis

py2app n’est malheureusement pas capable de réaliser une application autonome à partir de la version de Python fournie avec Mac OS X. Il va donc falloir installer une nouvelle version de Python ainsi que PyQt avec les dépendances nécessaires et bien sûr py2app.

Installation de Python
Télécharger et installer python-2.6.5-macosx10.3-2010-03-24.dmg (compatibilité de Mac OS X 10.3 jusqu'à 10.6)

la distribution Python fournie avec Mac OS X se trouve dans /System/Library/Frameworks/Python.framework/ alors que celle qu’on vient d’installer se situe dans /Library/Frameworks/Python.framework.

Installation de Qt
Télécharger et installer qt-sdk-mac-opensource-2010.03.dmg (version 4.6.3, compatibilité de Mac OS X 10.4 jusqu'à 10.6)

Installation de SIP
Télécharger et décompresser sip-4.10.2.tar.gz puis exécuter les commandes:

cd sip-4.10.2
python configure.py --arch i386
make
sudo make install

Installation de PyQt4
Télécharger et décompresser PyQt-mac-gpl-4.7.3.tar.gz puis exécuter les commandes:

cd PyQt-mac-gpl-4.7.3
python configure.py --use-arch i386
make
sudo make install

Installation de lxml
Télécharger et décompresser lxml-2.2.6.tgz puis exécuter les commandes:

cd lxml-2.2.6
python setup.py build --static-deps --libxml2-version=2.7.7 --libxslt-version=1.1.26
sudo python setup.py install

Maintenant que Qt, SIP, PyQt4 et lxml sont installés, il est possible d’exécuter Pyromaths en lançant le fichier pyromaths.py depuis l’application Terminal.

Installation de py2app

Les manipulations suivantes sont dédiées à l’installation de py2app.

Installation des setuptools
exécuter les commandes:

curl -O http://peak.telecommunity.com/dist/ez_setup.py
sudo python ez_setup.py -U setuptools

Installation de py2app
exécuter la commande:

sudo easy_install -U py2app

Installation de zlib
Télécharger et décompresser zlib-1.2.5.tar.bz2 puis exécuter les commandes:

cd zlib-1.2.5
./configure -s
make
sudo make install

Réalisation de Pyromaths.app

Dans le dossier source, disponible sur le serveur git, il y a un sous-dossier « mac » dans lequel se trouvent l’icône pyromaths.icns, le fichier de configuration pour py2app nommé setup.py et le fichier Info.plist. Ces trois fichiers sont utiles à la création de Pyromaths.app par py2app.

On trouve également les scripts shell setenv.sh et standalone.sh ainsi que le fichier qt.conf dont l’utilité est expliquée plus loin.

Pour réaliser l’application avec py2app :

python setup.py py2app

Le dossier data doit être copié dans Pyromaths.app/Contents/MacOS/ (inutile de copier le dossier linux ainsi que pyromaths-banniere.png et pyromaths.ico).

Pour optimiser l’application obtenue avec py2app, on peut supprimer les fichiers debug dans Pyromaths.app/Contents/Frameworks/. Il est également possible de supprimer de nombreux fichiers avec l’extension .py pour ne garder que les fichiers compilés .pyc. On peut aussi éliminer le code lié à l’architecture PowerPC.

Pour pouvoir lancer l’application avec les variables d’environnement nécessaires à l’utilisation de LaTeX, on ajoute, dans Pyromaths.app/Contents/MacOS/, le script shell nommé setenv.sh. Il faut ensuite modifier le CFBundleExecutable du fichier info.plist pour prendre en compte le script setenv.sh.

Pour éviter que les librairies Qt ne soient chargées deux fois, celles du bundle Pyromaths.app et celles du système, il est nécessaire d’ajouter le fichier qt.conf dans Pyromaths.app/Contents/Resources/.

Automatisation

Les manipulations décrites dans la partie « Réalisation de Pyromaths.app » peuvent se faire de manière automatique en exécutant le script shell standalone.sh.

Toutes les étapes nécessaires à la réalisation d’une application autonome de Pyromaths sur Mac OS X sont automatisées à l’aide de ce script qui permet d’obtenir l’application Pyromaths.app à partir du code source.