web-dev-qa-db-fra.com

Comment créer un exécutable Windows avec PyInstaller sur Ubuntu?

J'ai créé un jeu en utilisant pygame et je souhaite l'exporter dans un fichier .exe. J'ai utilisé pyinstaller pour cela, car il est disponible pour Ubuntu. Lorsque je lance le --onefile game, cela fonctionne parfaitement (sur mon ordinateur Ubuntu). Cependant, lorsque je l'envoie à mon ami qui a Windows, ce n'est PAS un exécutable Windows, mais simplement un "fichier" sans extension. Il ne peut pas l'exécuter. Le renommer Game.exe n'a pas fonctionné non plus.

Je suis à court d'idées ... quelqu'un peut-il aider?

2
ayanokouji

Bien entendu, l'exécutable binaire généré par PyInstaller sous Linux ne fonctionne que sous Linux et non sur d'autres systèmes d'exploitation tels que Windows. L'extension du nom de fichier est sans importance ici.

Selon la PyInstall FAQ vous ne pouvez pas l'utiliser non plus pour la compilation croisée pour différentes plates-formes, mais l'exécution de PyInstall dans Wine est supposée atteindre ce que vous voulez:

  1. Puis-je utiliser PyInstaller comme compilateur croisé?

    1. Puis-je créer un package binaire Windows sous Linux?

      Non, ceci n'est pas supporté. Veuillez utiliser Wine pour cela, PyInstaller fonctionne correctement dans Wine. Vous voudrez peut-être aussi jeter un œil à ce fil de la liste de diffusion . Dans la version 1.4, nous avions prévu un support pour cela, mais cela ne fonctionnait que pour moitié. Cela nécessiterait un système Windows sur une autre partition et ne fonctionnerait que pour les programmes purs Python. Dès que vous voulez une interface graphique décente (gtk, qt, wx), vous devez de toute façon installer les bibliothèques Windows. Il est donc beaucoup plus simple d’utiliser Wine.

D'après ce que j'ai compris, vous devrez installer PyInstall dans un environnement Wine comme vous le feriez sous Windows , puis l'utiliser comme vous le feriez sur un système Windows natif. Veuillez vous référer à Comment puis-je installer des logiciels ou des jeux Windows? pour obtenir un aperçu de la mise en route de Wine sur Ubuntu.

5
David Foerster

Vous pouvez essayer Python Packager

Le page d'accueil git donne l'instruction (python 2.7):

wget "http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi" 
wget "http://nchc.dl.sourceforge.net/project/pywin32/pywin32/Build%20218/pywin32-218.win32-py2.7.exe"
build_environment/create.sh
export WINEPREFIX=/tmp/path-outputted-from-create
wine start python-2.7.3.msi
wine pywin32-218.win32-py2.7.exe
build_environment/freeze.sh
./package sample-application/src/main.py MySampleProgram

Cela créera un environnement vin distinct et installera Python 2.7 comme mentionné. Si vous avez besoin d’une autre version, allez à la page d’accueil de python et téléchargez votre version.

Vous pouvez également suivre cette instruction qui télécharge un wine-clone:

git clone https://github.com/paulfurley/python-windows-packager
./python-windows-packager/package.sh /path/to/myProject
1
abu_bua