IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

tyrtamos

[Python] Avoir en même temps PyQt4 et PyQt5 sous Windows

Noter ce billet
par , 23/03/2015 à 10h06 (2256 Affichages)
Le logiciel "PyQt" permet à Python d'utiliser l'excellente bibliothèque graphique Qt (celle du bureau KDE de Linux!) afin de faire des programmes graphiques beaux et performants. Mais PyQt est passé de la version 4 à la version 5 avec une rupture de compatibilité: il y aura donc une période de transition pendant laquelle il faudra maintenir les programmes PyQt4, les convertir progressivement en PyQt5, et développer les nouveaux programmes en PyQt5.

Le problème, c'est que sous Windows, on installe PyQt4 ou PyQt5 avec les binaires (.exe), et l'éditeur riverbank dit qu'il n'est pas possible dans ce cas d'avoir les 2 versions en même temps! La seule possibilité pour avoir les 2 est de reconstruire à partir des sources et avec le même sip: c'est beaucoup plus compliqué!

Alors, on va le faire quand même et avec les binaires! On va utiliser pour ça les "environnements virtuels" qui existent à partir de Python 3.3 grâce au module "venv" (avant, on peut télécharger un module équivalent). On va installer PyQt4 dans l'un des environnements virtuels, et PyQt5 dans l'autre, et il suffira d'appeler le "bon" Python pour avoir la bonne version de PyQt.

Il y a cependant un petit problème: l'éditeur de PyQt a placé une sécurité: si l'un des PyQt est déjà installé, l'installation de l'autre échouera parce que le programme d'installation trouvera dans le registre que PyQt est déjà installé. Pour contourner cette sécurité, il faudra faire une petite modification du registre de Windows!

Cette méthode est issue d'une discussion sur le forum Python (merci à wiztricks!).

Voilà la manip en résumé. On va considérer que le Python normal se trouve dans c:\python34 et ne contient pas déjà un PyQt (sinon, on le désinstalle!):

On crée les 2 environnements virtuels comme ça (vous mettez les 2 répertoires où vous voulez avec les noms que vous voulez):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
c:\python34\python.exe -m venv d:\pyenvqt4
c:\python34\python.exe -m venv d:\pyenvqt5
On va faire une petite correction des fichiers pyvenv.cfg qui se trouvent à la racine de ces 2 environnements virtuels: mettre include-system-site-packages à true au lieu de false: l'avantage est que les programmes lancés sous cet environnement auront ainsi accès aux modules externes installés dans le python normal (c:\python34).

On installe PyQt4 avec le binaire de riverbank dans d:\pyenvqt4. Mais au début de l'installation, il faut changer le mode "Full" pour mettre le mode "Custom" afin de pouvoir donner la bonne adresse d'installation: d:\pyenvqt4.

Une fois l'installation terminée, il y a une nouvelle clé dans le registre: “PyQt4\py3.4\InstallPath” avec la valeur: “d:\pyenvqt4”. Avec Windows 8.1 64bits et Python 3.4 32bits, cela se trouve dans “HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node”. Pour d'autres configurations, cherchez: le principe est le même.

On exécute alors regedit.exe de Windows pour modifier le registre, et on remplace l'adresse d:\pyenvqt4 par une chaine vide.

Une fois ceci fait, on peut installer PyQt5 de la même façon dans d:\pyenvqt5 avec le mode "Custom".

Attention: quand cette installation est terminée, on reprend regedit.exe car il faut remettre l'adresse d:\pyenvqt4 qu'on a mis à vide précédemment: en effet, une future désinstallation de PyQt4 aura absolument besoin de cette adresse.

Ça y est: vous avez PyQt4 et PyQt5 en même temps sous Windows!

Il faut ajouter un petit travail pour que les PyQt retrouvent leurs petits: on place un petit fichier texte appelé qt.conf à côté des python.exe des 2 environnements virtuels, et contenant :

pour d:\pyenvqt4\Scripts\qt.conf

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
[Paths]
Prefix = ../Lib/site-packages/PyQt4
Binaries = .
Plugins = plugins
Translations = translations
et pour d:\pyenvqt5\Scripts\qt.conf la même chose avec PyQt5 au lieu de PyQt4.

Maintenant, vous savez que si vous voulez qu'un fichier "monprogramme.pyw" s'exécute avec PyQt, il faudra le lancer comme ça:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
# pour PyQt4:
d:\pyenvqt4\Scripts\pythonw.exe monprogramme.pyw

# pour PyQt5:
d:\pyenvqt5\Scripts\pythonw.exe monprogramme.pyw
D'ailleurs, pour essayer, vous pouvez exécuter les démos de PyQt4 et PyQt5:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
# pour PyQt4:
d:\pyenvqt4\Scripts\pythonw.exe  d:\pyenvqt4\Lib\site-packages\PyQt4\examples\demos\qtdemo\qtdemo.pyw

# pour PyQt5:
d:\pyenvqt5\Scripts\pythonw.exe d:\pyenvqt5\Lib\site-packages\PyQt5\examples\qtdemo\qtdemo.pyw
Vous pouvez de la même façon configurer vos outils de développement (idle, geany, eclipse+pydev, etc...).

Et, bien sûr, vous avez toujours votre Python de base opérationnel, à part qu'il n'a ni PyQt4, ni PyQt5.

Pour d'autres détails et compléments: voir sur mon site web (cf ma signature ou mon profil).

Envoyer le billet « [Python] Avoir en même temps PyQt4 et PyQt5 sous Windows » dans le blog Viadeo Envoyer le billet « [Python] Avoir en même temps PyQt4 et PyQt5 sous Windows » dans le blog Twitter Envoyer le billet « [Python] Avoir en même temps PyQt4 et PyQt5 sous Windows » dans le blog Google Envoyer le billet « [Python] Avoir en même temps PyQt4 et PyQt5 sous Windows » dans le blog Facebook Envoyer le billet « [Python] Avoir en même temps PyQt4 et PyQt5 sous Windows » dans le blog Digg Envoyer le billet « [Python] Avoir en même temps PyQt4 et PyQt5 sous Windows » dans le blog Delicious Envoyer le billet « [Python] Avoir en même temps PyQt4 et PyQt5 sous Windows » dans le blog MySpace Envoyer le billet « [Python] Avoir en même temps PyQt4 et PyQt5 sous Windows » dans le blog Yahoo

Mis à jour 23/03/2015 à 10h39 par tyrtamos

Catégories
Python , Programmation , Python

Commentaires