python程序打包windows版本的exe文件笔记
(1)Nuitka打包exe文件
主要参考来源:http://static.kancloud.cn/ay66544/py-0-1/2659009
zstandard这个模块会让文件更小 可以安装
pip install zstandard
Nuitka常用命令:
nuitka --standalone --onefile --windows-disable-console src.py
其他指令:
--version 显示程序的版本号并退出 -h, --help 显示此帮助信息并退出 --module 创建一个扩展模块可执行文件,而不是 程序。默认为关闭。 --standalone 为输出启用独立模式。这使您可以 将创建的二进制文件传输到其他机器,而无需 它使用现有的 Python 安装。这也是 意味着它会变大。它暗示了这些选项:“-- follow-imports”和“--python-flag=no_site”。默认值 关闭。 --onefile 在独立模式之上,启用 onefile 模式。这 表示不是文件夹,而是压缩的可执行文件 创建和使用。默认为关闭。 --python-debug 是否使用调试版本。默认使用你是什么 用于运行 Nuitka,很可能是非调试版本。 --python-flag=FLAG 要使用的 Python 标志。默认是你用来 运行 Nuitka,这会强制执行特定模式。这些是 标准 Python 可执行文件也存在的选项。 当前支持:“-S”(别名“no_site”), “static_hashes”(不使用散列随机化), “no_warnings”(不给出 Python 运行时警告), “-O”(别名“no_asserts”)、“no_docstrings”(不要使用 文档字符串)、“-u”(别名“无缓冲”)和“-m”。 默认为空。 --python-for-scons=PATH 如果使用 Python3.3 或 Python3.4,请提供一个路径 用于 Scons 的 Python 二进制文件。否则 Nuitka 可以 使用运行 Nuitka 的程序或“scons”二进制文件 在 PATH 或 Python 安装中找到 Windows 注册表。 --warn-implicit-exceptions 启用对检测到的隐式异常的警告 编译时间。 --warn-unusual-code 为编译时检测到的异常代码启用警告 时间。 --assume-yes-for-downloads 如有必要,允许 Nuitka 下载外部代码, 例如依赖 walker,ccache,甚至 gcc 视窗。要禁用,从 nul 设备重定向输入, 例如“</dev/null”或“<NUL:”。默认为提示。 控制结果中包含的模块和包: --include-package=包 包括一个完整的包裹。作为 Python 命名空间, 例如“some_package.sub_package” 然后 Nuitka 将 找到它并包含它以及下面找到的所有模块 二进制或扩展模块中的磁盘位置 它创建并使其可供 代码。为了避免不需要的子包,例如考验你 例如可以执行此“--nofollow-import-to=*.tests”。 默认为空。 --include-module=模块 包括一个模块。作为 Python 命名空间, 例如“some_package.some_module” 然后 Nuitka 将 找到它并将其包含在二进制文件或扩展中 它创建的模块,并使其可用于导入 代码。默认为空。 --include-plugin-directory=模块/包 包括该目录的内容,无论是否 给定的主程序以可见的形式使用它。 覆盖所有其他包含选项。可以给 多次。默认为空。 --include-plugin-files=模式 包含到与 PATTERN 匹配的文件中。覆盖所有 其他跟随选项。可以多次给予。 默认为空。 --prefer-源代码 对于已经编译好的扩展模块,有 源文件和扩展模块,通常 使用了扩展模块,但应该会更好 从可用的源代码编译模块 最棒的表演。如果不需要,有--no- prefer-source-code 禁用有关它的警告。 默认关闭。 将以下内容控制到导入的模块中: --follow-stdlib 也从标准下降到导入的模块 图书馆。这将增加编译时间 很多。默认为
可能出现问题
问题0
安装 ordered-set 模块
pip install ordered-set
问题1
这个可以用上面下载的MinGW64替换,问题不大。但是这个是新版,建议替换上面那个
Is it OK to download and put it in 'C:\Users\Administrator\AppData\Local\Nuitka\Nuitka\Cache\downloads\gcc\x86_64\11.3.0-14.0.3-10.0.0-msvcrt-r3'.
No installer needed, cached, one time question.
Proceed and download? [Yes]/No

下载文件:https://github.com/brechtsanders/winlibs_mingw/releases/download/11.3.0-14.0.3-10.0.0-msvcrt-r3/winlibs-x86_64-posix-seh-gcc-11.3.0-llvm-14.0.3-mingw-w64msvcrt-10.0.0-r3.zip
网盘下载:https://share.weiyun.com/kVIjdS00
下载解压到C:\Users\Administrator\AppData\Local\Nuitka\Nuitka\Cache\downloads\gcc\x86_64\11.3.0-14.0.3-10.0.0-msvcrt-r3文件夹
.
问题2
Is it OK to download and put it in 'C:\Users\Administrator\AppData\Local\Nuitka\Nuitka\Cache\downloads\ccache\v4.6'.
No installer needed, cached, one time question.
Proceed and download? [Yes]/No

下载文件:https://github.com/ccache/ccache/releases/download/v4.6/ccache-4.6-windows-32.zip
网盘下载:https://share.weiyun.com/abQimaGy
下载解压到 C:\Users\Administrator\AppData\Local\Nuitka\Nuitka\Cache\downloads\ccache\v4.6
.
问题3
to analyze the dependencies of Python extension modules.
Is it OK to download and put it in 'C:\Users\ws\AppData\Local\Nuitka\Nuitka\Cache\downloads\depends\x86_64'.
No installer needed, cached, one time question.
Proceed and download? [Yes]/No

下载链接:https://dependencywalker.com/depends22_x64.zip
网盘链接:https://share.weiyun.com/uRJzES29
下载解压到 C:\Users\Administrator\AppData\Local\Nuitka\Nuitka\Cache\downloads\depends\x86_64
(2)pyinstaller打包exe文件
命令:pyinstaller -Fw src.py
pyinstall -Fw --upx-dir D:\upx src.py
(3)小结
1. pyinstaller在默认环境下,打包文件很大,以百兆计算。配合upx能有效降低。
优点:使用简单,稳定
2. Nuitka打包
mingw环境配置问题较多,需要逐个解决。搭配vs编译器简单稳定,默认环境最终文件也比较大。
3.两种方式在新建的必要运行环境中,打包的文件都较小。nuitka更小一点,但影响不大。

浙公网安备 33010602011771号