Compile Python 3.6 script to standalone exe with Nuitka on Windows 10

蹲街弑〆低调 提交于 2020-12-28 20:51:12

问题


Note:
Before marking this question as duplicate, please verify that the other question answers the topic for this setup:

  • OS: Windows 10, 64-bit
  • Python version: 3.6 or higher
  • Python Compiler: Nuitka, development version 0.5.30rc5
  • MSVC compiler: Visual Studio 2017 Community, vcvars64.bat

 

1. How I build my exe

I'll first explain how I build my executable. Suppose I have a folder with a simple python script that I want to build:

The buildscript.py looks like this:

#####################################################
#               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")

 

2. Result of the build

After the build finishes, the folder looks like this (see picture below). As you can see, there are plenty of other files sitting next to the executable. I can see .dll and .pyd files.

 

3. Desired result

I wish I could build just a standalone executable. No dll- or other files needed. When I put the executable on a thumb drive and stick it into another computer (running Windows 10, 64-bit), it should just work. Even if there is no Python installed on that computer.

Is this possible with Nuitka?
If no, is it possible with another Python compiler?
Please provide all the steps needed, one-by-one :-)


回答1:


Easier than Nuitka for a single executable is e.g. PyInstaller: pyinstaller --onefile program.py (to disable the console window for GUI applications add the -w option).

To create a single executable with Nuitka, you can create a SFX archive from the generated files. You can run Nuitka with the --standalone option which generates a program_dist directory.

Create then a 7-Zip SFX config file config.txt: ;!@Install@!UTF-8! GUIMode="2" ExecuteFile="%%T/program_dist/program.exe" ;!@InstallEnd@!

Then get the 7-Zip SFX from https://github.com/chrislake/7zsfxmm (from releases – 7zsd_extra_171_3901.7z) and unpack the 7zsd_All_x64.sfx file.

Pack then the program_dist with 7-Zip (so the folder is included in the archive) to program.7z. Then, an SFX can be created with copy /b 7zsd_All_x64.sfx + config.txt + program.7z single_executable.exe.

On Unix, you can also create yourself an SFX if you create a tar archive and append it to a shell script which extract it and unpack it, for details see https://www.linuxjournal.com/node/1005818.




回答2:


Open console and type:

nuitka --recurse-all program.py

An exe file will be created. Run it.



来源:https://stackoverflow.com/questions/49831163/compile-python-3-6-script-to-standalone-exe-with-nuitka-on-windows-10

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!