-
Portabilité du code
Bonjour à tous !
J'écris actuellement un programme en Python / Qt avec PySide.
L'avantage du python, c'est d'être très portable. En standard ! ;)
Mais si on utilise Qt, comment ça se passe pour l’exécution sur d'autres plateformes (windows / linux principalement) que la plateforme de développement?
Merci pour vos éclaircissements !
Poukill
-
Bonsoir,
si tu utilises uniquement des classes et méthodes de Python et de PySide, il ne devrait pas y avoir de problème (le cas échéant, la documentation Qt devrait le stipuler).
Après, si tu t'amuses à rajouter du code en faisant des appels ctypes (genre dwmapi sous Windows 7) n'oublie pas d'englober ces parties de code avec un 'if' en fonction de la plateforme (module platform pour savoir l'OS).
-
Bonjour,
C'est facile d'écrire du code qui s'exécute sans modification entre Windows et Linux, y compris avec PyQt/Pyside. Il suffit de ne pas utiliser de module spécifique aux OS, ou de les utiliser en testant l'OS avant (il sys.platform=='win32' ... elif sys.platform=='linux2'...). Il y a en particulier le domaine de la "gestion des droits", très spécifique, qui pourra être traité en testant la plateforme.
On peut aussi prendre quelques précautions avec certains codes. Par exemple, la séparation entre un répertoire et un nom de fichier se fait mieux avec os.path.split(chemin), et c'est Python qui se débrouille dans ce cas avec les séparateurs propres à chaque OS ('\', '/', ':').
-
Ok d'accord. Mais le système cible devra avoir Qt + Pyside, c'est bien ça ?
Cas pratique : je développe sous windows. J'ai installé Qt4.8.2 +PySide (compilée avec Qt4.8.2). Mon programme fonctionne correctement.
Pour le déploiement, que faut-il que je fournisse si l'utilisateur utilise un autre plateforme (Linux par exemple) ? Il faudra qu'il installe Qt + PySide c'est bien ça ? :?
-
Sous Linux oui, sous Windows et OSX il y a des utilitaires pour faire des .exe et des .app encapsulant tout ce dont le programme a besoin (py2exe, py2app et cxfreeze par exemple).
-
Oui, bien sûr! Pour que le même code Python s'exécute sans modification sur Windows et Linux, il faut bien que l'interpréteur et les bibliothèques fasse le lien avec les spécificités de l'OS: ce ne sont donc pas les mêmes; et il faut qu'ils soient installés.
En ce qui concerne les principales distributions Linux, Python 2.6 ou 2.7 est déjà pré-installé, et les "paquets" (rpm, deb) de PyQt4 ou Pyside sont disponibles: il n'y a plus qu'à installer. Tu devrais trouver des infos d'installation sur ce site.
Si tu dois distribuer ton programme pour Linux, tu devrais essayer! D'abord pour vérifier qu'il fonctionne, mais aussi pour pouvoir donner des instructions précises d'installation. De nos jours, c'est facile: avec Virtualbox (par exemple), on peut installer les principaux Linux (debian/ubuntu/mint, opensuse, fedora/centos, ...) en virtuel sur Windows.
-
ok du coup l'utilisation de Python n'est pas forcément géniale dans mon cas.
J'ai plus l'habitude du C++. Or l'inconvénient du C++ c'est qu'il faut compiler soi-même pour toutes les plateformes(et toutes les bibliothèques qu'on utilise). L'avantage, c'est que l'utilisateur a juste a lancer le programme, et puis c'est tout (les bibliothèques sont en général fourni avec l’exécutable) !
En python, c'est l'inverse. Moi je suis tranquille, je développe avec mes libs sur ma plateforme. Par contre, c'est l'utilisateur qui va devoir se taper l'installation de toutes les bibliothèques ! 8O
Pas glop quand même... :?
-
Sous Windows: comme le disait ashren, on peut toujours utiliser cx_freeze ou py2exe pour faire un exécutable autonome (donc qui ne demande pas l'installation de Python). En plus, on peut utiliser un installeur comme innosetup, qui permet à l'utilisateur d'installer ton programme comme n'importe quel autre, sans même savoir que c'est du Python!
Sous linux: on peut aussi utiliser cx_freeze, mais c'est plus compliqué. Sinon, l'installation des paquets nécessaires à l'exécution de ton programme est extrêmement facile: je serais très étonné que celui qui utilise Linux soit rebuté par cette installation.
-
Oui c'est vrai, on peut couper la poire en deux : CxFreeze pour Windows, et l'utilisateur se débrouillera pour linux. Je pense que c'est mieux ainsi, parce que mine de rien c'est pas évident d'installer PySide pour windows (enfin y'a des binaires, mais pour lier avec Qt4.8.2 c'est déjà moins marrant).
Alors que sous Linux, un coup de apt-get ou équivalent et c'est réglé ! ;)
Bon, va pour ça.
Merci ! :ccool: