Compilation croisée D'un script Python sur Linux dans un exécutable Windows
j'ai un script Python que j'aimerais compiler dans un exécutable Windows. Maintenant,py2exe
fonctionne très bien sous Windows, mais j'aimerais pouvoir l'exécuter sous Linux. J' avoir Windows sur ma machine de développement, mais Linux est ma plate-forme de développement primaire et je commence à en avoir assez de redémarrer dans Windows juste pour créer le .exe
. Je ne veux pas non plus avoir à acheter une deuxième licence Windows pour fonctionner sur une machine virtuelle telle que VirtualBox. Des idées?
PS: je suis conscient que py2exe
ne compile pas exactement le fichier python autant que package votre script avec l'interpréteur Python. Mais dans tous les cas, le résultat est que vous n'avez pas besoin de Python installé pour exécuter le script.
4 réponses
avez-vous regardé PyInstaller?
Il semble que 1.4 support cross-compilation
http://www.pyinstaller.org/browser/tags/1.4/doc/CHANGES.txt dit:
ajouter la prise en charge de la compilation croisée: PyInstaller est maintenant capable de construire des exécutables Windows sous Linux. Voir la documentation pour plus de détails.
je ne l'ai pas essayé moi-même.
j'espère que cela aide
comme mentionné par d'autres answerers, la fonctionnalité de compilation croisée est supprimée de PyInstaller depuis 1.5
. Ici, montrez comment empaqueter un exécutable Windows à partir de scripts Python en utilisant PyInstallervin.
Étape 1: Installez le vin et Python
sudo apt-get install wine
wine msiexec /i python-2.7.10.msi /L*v log.txt
PS: Les nouvelles versions de Python incluent déjà pip
(est utilisé pour installer pyinstaller
). Télécharger le paquet d'installation de Python de ici (e.g.,python-2.7.10.msi
)
Etape 2: Installer PyInstaller sur le vin
$ cd ~/.wine/drive_c/Python27
$ wine python.exe Scripts/pip.exe install pyinstaller
Successfully installed pyinstaller-3.1.1 pypiwin32-219
Étape 3: Package Python scripts
le Paquet de scripts 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 en VirtualBox pour exécuter py2exe. VBox offre un client en ligne de commande puissant pour automatiser les tâches, de sorte qu'il quelque chose que vous pourriez probablement intégrer dans votre processus de développement avec facilité.
j'ai testé py2exe à l'intérieur du vin, et il fonctionne. Vous aurez besoin d'installer python dans wine pour que cela fonctionne, ou si vous n'utilisez que le libarary standard, vous pouvez empaqueter py2exe avec py2exe à partir de la machine windows et l'utiliser ensuite dans wine. Gardez juste à l'esprit que vous avez besoin de la même version des bibliothèques visual C DE ms dans wine que celle utilisée pour compiler python, sinon les choses ne fonctionneront pas correctement.