Remarque:
Avant de marquer cette question comme double, veuillez vérifier que l'autre question répond au sujet de cette configuration:
Je vais d'abord expliquer comment je construis mon exécutable. Supposons que j'ai un dossier avec un simple script python que je veux construire:
Le buildscript.py
ressemble à ça:
#####################################################
# NUITKA BUILD SCRIPT #
#####################################################
# Author: Matic Kukovec
# Date: April 2018
import os
import platform
NUITKA = "C:/Python36/Scripts/nuitka3-script.py" # Path where my nuitka3-script.py is
CWD = os.getcwd().replace("\\", "/")
MSVC = "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Auxiliary/Build/vcvars64.bat"
PYTHON_VERSION = "3.6"
PYTHON_EXE_PATH= "C:/Python36/python.exe"
NUMBER_OF_CORES_FOR_COMPILATION = 1 # 1 is the safest choice, but you can try more
# Generate command
command = '"{}" AMD64 &'.format(MSVC)
command += "{} ".format(PYTHON_EXE_PATH)
command += "{} ".format(NUITKA)
command += "--python-version={} ".format(PYTHON_VERSION)
command += "--output-dir={}/output ".format(CWD)
command += "--verbose "
command += "--jobs={} ".format(NUMBER_OF_CORES_FOR_COMPILATION)
command += "--show-scons "
# command += "--windows-disable-console "
# command += "--icon={}/myicon.ico ".format(CWD)
command += "--standalone "
# command += "--run "
command += "{}/cubeimporter.py ".format(CWD)
os.system(command)
print("END")
Une fois la construction terminée, le dossier ressemble à ceci (voir l'image ci-dessous). Comme vous pouvez le voir, il existe de nombreux autres fichiers à côté de l'exécutable. Je vois .dll
et .pyd
des dossiers.
J'aimerais pouvoir construire juste un exécutable autonome. Aucun fichier DLL ou autre n'est nécessaire. Lorsque je mets l'exécutable sur une clé USB et le colle dans un autre ordinateur (exécutant Windows 10, 64 bits), cela devrait simplement fonctionner. Même s'il n'y a pas Python installé sur cet ordinateur.
Est-ce possible avec Nuitka?
Si non, est-ce possible avec un autre compilateur Python?
Veuillez fournir toutes les étapes nécessaires, une par une :-)
Plus simple que Nuitka pour un seul exécutable est par exemple PyInstaller: pyinstaller --onefile program.py
(pour désactiver la fenêtre de console pour les applications GUI, ajoutez le -w
option).
Pour créer un seul exécutable avec Nuitka, vous pouvez créer une archive SFX à partir des fichiers générés. Vous pouvez exécuter Nuitka avec le --standalone
option qui génère un program_dist
répertoire.
Créez ensuite un fichier de configuration SFX 7-Zip config.txt
: ;!@Install@!UTF-8! GUIMode="2" ExecuteFile="%%T/program_dist/program.exe" ;!@InstallEnd@!
Obtenez ensuite le SFX 7-Zip à partir de https://github.com/chrislake/7zsfxmm (à partir des versions - 7zsd_extra_171_3901.7z
) et déballez le 7zsd_All_x64.sfx
fichier.
Emballez ensuite le program_dist
avec 7-Zip (donc le dossier est inclus dans l'archive) pour programmer.7z. Ensuite, un SFX peut être créé avec copy /b 7zsd_All_x64.sfx + config.txt + program.7z single_executable.exe
.
Sous Unix, vous pouvez également créer vous-même un SFX si vous créez une archive tar et l'ajoutez à un script Shell qui l'extrait et le décompresse, pour plus de détails, voir https://www.linuxjournal.com/node/1005818 .
Ouvrez la console et tapez:
nuitka --recurse-all program.py
Un fichier exe sera créé. Exécuter.