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.

41
demandé sur Damian Yerrick 2010-06-01 19:18:31

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

16
répondu luc 2010-06-01 15:29:03

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.

20
répondu SparkAndShine 2016-02-24 15:24:36

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é.

4
répondu Adam Crossland 2010-06-01 15:23:14

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.

3
répondu Perkins 2012-01-12 19:18:34