J'ai besoin de regrouper mon python, ses dépendances et python dans un seul programme d'installation MSI. Le résultat final devrait être:
Une sorte de dup de cette question sur comment transformer un python en un exécutable .
Cela se résume à:
J'utilise PyInstaller (la version svn) pour créer une version autonome de mon programme qui inclut Python et toutes les dépendances. Il faut un peu de bidouillage pour l'obtenir pour fonctionner correctement et tout inclure (comme le fait py2exe et d'autres programmes similaires, voir cette question ), mais cela fonctionne très bien.
Vous devez ensuite créer un programme d'installation. NSIS Fonctionne très bien pour cela et est gratuit, mais il crée des fichiers .exe et non .msi. Si .msi n'est pas nécessaire, je le recommande fortement. Sinon, consultez les réponses à la question this pour d'autres options.
Mon entreprise utilise l'outil gratuit InnoSetup. Il s'agit d'un programme moyennement complexe qui offre des tonnes de flexibilité pour les installateurs de bâtiments pour Windows. Je crois cependant qu'il crée des fichiers .exe et non .msi. InnoSetup n'est pas spécifique à python mais nous avons créé un programme d'installation pour l'un de nos produits qui installe python avec des dépendances vers des emplacements spécifiés par l'utilisateur au moment de l'installation).
J'ai obtenu de bien meilleurs résultats avec les dépendances et les structures de dossiers personnalisées en utilisant pyinstaller , et cela vous permet de trouver et de spécifier les importations et les crochets cachés pour les grandes dépendances comme numpy et scipy. Mais aussi un PITA.
py2exe rendra les exécutables Windows avec python inclus).
Ok, j'ai utilisé py2exe avant et cela fonctionne parfaitement sauf pour une chose ... Il ne fonctionne que sur les machines exécutables Windows. J'ai ensuite appris à propos de Jython qui transforme un script python en un fichier .Jar. Comme vous le savez, il est exécutable à partir de n'importe quelle machine qui a Java ("À votre dernière version exécutée ") installée. Ce qui est génial car à la fois unix, windows et ios (la plupart du temps) exécutent Java. Cela signifie que son exécutable à partir de toutes les machines suivantes. Tant qu'ils exécutent Java. Pas besoin de" py2mac + py2exe + freeze "juste pour fonctionner sur tous les systèmes d'exploitation. Just Jython
Pour plus d'informations sur son fonctionnement et son utilisation, cliquez ici.
http://www.jython.org/
py2exe est la meilleure façon de procéder. C'est un peu un PITA à utiliser, mais le résultat final fonctionne très bien.