par , 23/03/2015 à 11h06 (2448 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):
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
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:
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:
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).