当前位置: 代码网 > it编程>前端脚本>Python > Python代码打包为单个可执行文件实现过程

Python代码打包为单个可执行文件实现过程

2025年09月25日 Python 我要评论
目前最常用的两种方法是使用 nuitka 和 pyinstallerpyinstaller:这是一个非常流行的工具,可以将python脚本打包为单个可执行文件,支持windows、macos和linu

目前最常用的两种方法是使用 nuitkapyinstaller

  • pyinstaller:这是一个非常流行的工具,可以将python脚本打包为单个可执行文件,支持windows、macos和linux。它还能够自动检测并包含大多数python包和库。优点是简单易用,缺点是在运行时会释放一堆临时文件。
  • nuitka: 是将python代码编译为c/c++代码的编译器,然后再使用c/c++编译器生成可执行文件。与其他打包工具相比,它能产生性能更优的可执行文件。优点是打包后文件执行效率高,缺点是打包速度慢且某些库不兼容。

pyinstaller

1. 安装

pip install pyinstaller

2. 基本用法

pyinstaller main.py
pyinstaller --onefile main.py
pyinstaller --onefile --name=hello main.py

3. 常用参数

参数说明
--onefile将所有依赖打包成一个单独的可执行文件。没有这个选项时,生成的可执行文件将依赖于多个文件
--windowed打包为 gui 应用程序,不显示控制台窗口(仅适用于 windows 和 macos)
--name指定生成的可执行文件的名称
--icon为生成的可执行文件指定图标文件。图标文件通常为 .ico(windows)或 .icns(macos)格式。
--add-data添加额外的数据文件。格式为 source:destination,其中 source 是本地路径,destination 是可执行文件内的路径。
--hidden-import手动指定需要包含的模块。如果某些模块在运行时动态导入,pyinstaller 可能无法自动检测到这些依赖项
--exclude-module手动排除某些模块

示例用法如下:

pyinstaller --onefile \
            --windowed \
            --name=my_program \
            --icon=assets/app_icon.ico \
            --add-data="resources/config.json;resources" \
            --hidden-import=json \
            main.py

4. 配置文件

pyinstaller 在首次运行时会生成一个 .spec 文件,这个文件定义了打包的所有配置。你可以编辑这个文件来自定义打包过程。

在生成的 my_program.spec 文件中,你可以自定义一些高级选项,比如添加额外的数据文件、指定打包目录等。

例如,添加一个额外的数据文件到 datas 列表中:

datas=[('data_folder/*', 'data')]

使用自定义的 .spec 文件进行打包:

pyinstaller my_program.spec

5. 常见问题

pyinstaller 执行后报错通常为以下类似问题,手动导入模块即可解决

# 未正常导入:crypto.cipher.pkcs1_v1_5 
importerror: cannot import name 'pkcs1_v1_5' from 'crypto.cipher'

# 未正常导入:crypto.publickey.rsa
importerror: cannot import name 'rsa' from 'crypto.publickey'

# 未正常导入:boto3
modulenotfounderror: no module named 'boto3'

# 未正常导入:tqdm
modulenotfounderror: no module named 'tqdm'

nuitka

1. 安装

pip install nuitka

同时确保安装了 c 编译器,如 gcc(linux)、clang(macos)、msvc(windows)或者 mingw-w64(windows)。

在 windows 上,建议使用 mingw-w64。

2. 打包命令

nuitka --standalone main.py

# 使用pandas
nuitka --standalone --onefile --plugin-enable=pandas  script.py

# 使用tkinter、numpy
nuitka --standalone --follow-imports --plugin-enable=tk-inter --plugin-enable=numpy example.py

# 打包为单文件
nuitka --standalone --onefile --show-progress  --lto=yes script.py

3. 常用参数

  • --standalone:生成一个包含所有依赖的目录
  • --onefile:将所有内容打包成一个单一的可执行文件,pip install zstandard 可减小大小
  • --follow-imports:自动导入所需模块
  • --plugin-enable:用于启用特定的编译插件,例如:tkinter、pyqt5、numpy等
  • --show-progress:展示打包进度
  • --windows-icon:指定程序图标
  • --windows-disable-console:去掉控制台窗口
  • --lto=yes:启用链接时优化(link time optimization),可以生成更小、更快的二进制文件。

4. 其他用途

编译 .py 文件为 .pyd

nuitka --module your_script.py

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com