在Windows 10上使用Nuitka将Python 3.6脚本编译为独立exe [英] Compile Python 3.6 script to standalone exe with Nuitka on Windows 10

查看:100
本文介绍了在Windows 10上使用Nuitka将Python 3.6脚本编译为独立exe的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

注意:
在将此问题标记为重复之前,请验证其他问题是否可以回答此设置的主题:

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

  • 操作系统:Windows 10(64位)
  • Python版本:3.6或更高版本
  • Python编译器:Nuitka,开发版本0.5.30rc5
  • MSVC编译器:Visual Studio 2017社区vcvars64.bat

 

 

我将首先解释如何构建可执行文件.假设我有一个要构建的带有简单python脚本的文件夹:

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

buildscript.py 看起来像这样:

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

 

 

构建完成后,该文件夹如下所示(请参见下图).如您所见,可执行文件旁还有许多其他文件.我可以看到 .dll .pyd 文件.

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.

 

 

我希望我可以只构建一个独立的可执行文件.无需dll-或其他文件.当我将可执行文件放在拇指驱动器上并将其粘贴到另一台计算机(运行Windows 10,64位)时,它应该可以正常工作.即使那台计算机上没有安装Python.

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.

Nuitka可以做到吗?
如果不是,是否可以使用其他Python编译器?
请一一提供所有必要的步骤:-)

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

推荐答案

例如,单个可执行文件比Nuitka更容易.PyInstaller: pyinstaller --onefile program.py (要为GUI应用程序禁用控制台窗口,请添加 -w 选项).

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

要使用Nuitka创建单个可执行文件,可以从生成的文件创建SFX存档.您可以使用-standalone 选项运行Nuitka,该选项会生成一个 program_dist 目录.

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.

然后创建一个7压缩SFX配置文件 config.txt :;!@ Install @!UTF-8!GUIMode ="2"ExecuteFile ="%% T/program_dist/program.exe";!@ InstallEnd @!

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

然后从 https://github.com/chrislake/7zsfxmm (从版本– 7zsd_extra_171_3901.7z )中解压缩 7zsd_All_x64.sfx 文件.

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.

然后用7-Zip将 program_dist 打包(因此该文件夹包含在存档中)到program.7z.然后,可以使用 copy/b 7zsd_All_x64.sfx + config.txt + program.7z single_executable.exe 创建SFX.

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.

在Unix上,如果您创建tar归档文件并将其附加到可解压缩并解压缩的Shell脚本中,则还可以创建自己的SFX,有关详细信息,请参见

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.

这篇关于在Windows 10上使用Nuitka将Python 3.6脚本编译为独立exe的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆