J'ai un script Python que je voudrais compiler dans un exécutable Windows. Maintenant, py2exe
fonctionne bien sous Windows, mais j'aimerais pouvoir l'exécuter depuis Linux. Je fais avoir Windows sur ma machine de développement, mais Linux est ma principale plate-forme de développement et j'en ai assez de redémarrer Windows juste pour créer le .exe
. Je ne veux pas non plus acheter une deuxième licence Windows pour fonctionner sur une machine virtuelle telle que VirtualBox. Des idées?
PS: je sais que py2exe
ne compile pas exactement le fichier python autant que le package de votre script avec l'interpréteur Python. Mais de toute façon, le résultat est que vous ne ' t besoin de Python installé pour exécuter le script.
Avez-vous regardé PyInstaller ?
Il semble que les versions via 1.4 prennent en charge la compilation croisée (le support a été supprimé dans 1.5+). Voir cette réponse pour savoir comment le faire avec PyInstaller 1.5+ sous Wine.
http://www.pyinstaller.org/browser/tags/1.4/doc/CHANGES.txt dit:
Ajout de la prise en charge de la compilation croisée: PyInstaller est désormais capable de créer des exécutables Windows lors de l'exécution sous Linux. Voir la documentation pour plus de détails.
Je ne l'ai pas essayé moi-même.
J'espère que ça aide
Comme mentionné par d'autres répondeurs, la fonction de compilation croisée est supprimée de PyInstaller puisque 1.5
. Ici, montrez comment empaqueter un exécutable Windows à partir de Python en utilisant PyInstaller sous wine .
Sudo apt-get install wine
wine msiexec /i python-2.7.10.msi /L*v log.txt
PS: plus récent Python incluent déjà pip
(est utilisé pour installer pyinstaller
). Téléchargez Python package d'installation à partir de - ici (par exemple, python-2.7.10.msi
)
$ cd ~/.wine/drive_c/Python27
$ wine python.exe Scripts/pip.exe install pyinstaller
Successfully installed pyinstaller-3.1.1 pypiwin32-219
Package Python (par exemple, HelloWorld.py
) avec pyinstaller
.
$ wine ~/.wine/drive_c/Python27/Scripts/pyinstaller.exe --onefile HelloWorld.py
# filename: HelloWorld.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print('Hello World!')
Le fichier exécutable Windows se trouve dans dist/
.
$ wine dist/HelloWorld.exe
Hello World!
fixme:msvcrt:__clean_type_info_names_internal (0x1e24e5b8) stub
Reportez-vous à ici pour la description détaillée.
Vous pouvez exécuter Windows dans VirtualBox afin d'exécuter py2exe. VBox offre un puissant client en ligne de commande pour automatiser les tâches, c'est donc quelque chose que vous pourriez probablement intégrer facilement à votre processus de développement.
J'ai testé py2exe à l'intérieur de wine, et il fonctionne. Vous aurez besoin d'installer python dans wine pour que cela fonctionne, ou si vous utilisez uniquement la bibliothèque standard, vous pouvez regrouper py2exe avec py2exe à partir de la machine Windows, puis l'utiliser dans wine. Juste gardez à l'esprit que vous avez besoin de la même version des bibliothèques ms visual C dans wine que celles utilisées pour compiler python ou les choses ne fonctionneront pas correctement.