☰
auto-py-to-exe 入门指南:用图形界面把 Python 脚本打包成 exe
2026/10/15 8:00:35 网站建设 项目流程
  • 开发工具
  • 桌面应用

【免费下载链接】auto-py-to-exe

Converts .py to .exe using a simple graphical interface

项目地址:https://gitcode.com/gh_mirrors/au/auto-py-to-exe
点击查看免费下载

auto-py-to-exe 是一个基于 Python 的 .py → .exe 转换工具,它用简单直观的图形界面(GUI)封装了 PyInstaller 的完整能力,让开发者无需记忆冗长的命令行参数即可完成打包。本文以本项目仓库中的芬兰语版 README(README-Finnish.md)为主体骨架,结合仓库源码逐步讲解环境要求、三种安装方式、界面操作流程、全部命令行参数、JSON 配置复用与测试方法,读完即可独立完成一次完整的 exe 打包。

项目是什么:图形界面 + PyInstaller 的组合

从本质上讲,auto-py-to-exe 是一个"前端壳":它通过 Eel 库拉起一个本地 Web 界面,把用户在界面上勾选的选项翻译成 PyInstaller 命令行参数,再调用 PyInstaller 完成真正的打包工作。在 auto_py_to_exe/packaging.py 的package()函数中可以看到,最终执行的是run_pyinstaller(pyinstaller_args[1:]),即直接复用 PyInstaller 的 Python 运行时入口,而不是以子进程方式调用外部命令。

前端界面构建于仓库内的 auto_py_to_exe/web/index.html,所有与 Python 后端的交互(选文件、导入导出配置、触发打包)都通过 auto_py_to_exe/ui.py 中@eel.expose修饰的函数完成。因此,只要你的系统能运行 PyInstaller,auto-py-to-exe 就能在其上工作,这也是它支持 Windows、Linux、macOS 的原因。

当前仓库版本号为 2.45.1(见 auto_py_to_exe/init.py)。

环境要求

运行 auto-py-to-exe 需要:

  • Python:3.6–3.12

需要特别说明的是界面展示方式:如果想要看到文档截图中那种独立的应用窗口,本机需要安装 Chrome 浏览器(Eel 会优先寻找 Chrome 来承载界面);如果未安装 Chrome,或者通过--default-browser参数指定,则会改用系统的默认浏览器打开界面。

此外需要注意:从 PyInstaller 4.0 开始,Python 2.7 已不再受支持。如果你仍需要在 Python 2.7 环境下使用本工具,可参考下文「Python 2.7 兼容性说明」一节。

安装与运行

方式一:通过 PyPI 安装(推荐)

安装只需一条命令:

$ pip install auto-py-to-exe

安装完成后,在命令行直接运行:

$ auto-py-to-exe

方式二:从源码仓库安装

如果你希望使用最新源码而非 PyPI 发布版,可以克隆仓库并执行setup.py install:

$ git clone https://github.com/brentvollebregt/auto-py-to-exe.git $ cd auto-py-to-exe $ python setup.py install

运行方式与 PyPI 安装一致:

$ auto-py-to-exe

方式三:本地直接运行(不安装)

不想安装到环境里时,可以只克隆源码并安装依赖后以模块方式运行:

$ git clone https://github.com/brentvollebregt/auto-py-to-exe.git $ cd auto-py-to-exe $ python -m pip install -r requirements.txt $ python -m auto_py_to_exe

执行最后一条命令后,会打开一个承载应用界面的 Chrome 窗口。这里有一个重要细节:执行python -m auto_py_to_exe时,确保你位于auto_py_to_exe包的上级目录(即完成依赖安装后所在的仓库根目录);否则就需要用绝对路径或正确的相对路径来引用auto_py_to_exe目录。仓库根目录下的 run.py 也保留了兼容入口,它内部只是把python run.py伪装成python -m auto_py_to_exe调用,以保证官方演示视频中的旧指令依然可用。

界面操作:四步完成打包

应用启动后,界面操作流程非常简单:

  1. 选择脚本位置:在"脚本位置"输入框中粘贴脚本路径,或通过文件选择器定位.py文件。输入框的边框会变为蓝色,表示该文件确实存在(对应 auto_py_to_exe/ui.py 中暴露给前端调用的does_file_exist检查)。
  2. 配置打包选项:按需设置打包模式(单文件/单目录)、控制台窗口、图标、附加文件等选项。
  3. 点击转换按钮:点击界面底部的大型蓝色按钮开始转换。
  4. 获取产物:打包完成后,在output目录中即可找到转换生成的文件。

对于只有控制台输出的简单脚本,可直接参考 examples/1-basic/main.py;需要隐藏控制台窗口的 GUI 程序可参考 examples/2-no-console/main.py(Tkinter 示例);涉及图片、JSON 等非 Python 资源文件的打包可参考 examples/3-images-and-other-non-py-files/main.py,其中展示了用sys._MEIPASS定位打包后临时资源目录的标准写法。

命令行参数详解

auto-py-to-exe命令的完整用法为:

auto-py-to-exe [-db] [-c [CONFIG]] [-o [POLKU]] [tiedostonimi]

其中POLKU意为"路径",tiedostonimi意为"文件名"(来自芬兰语版文档)。下面是完整的参数说明表:

参数类型说明
tiedostonimi(文件名)位置参数/可选预填充界面中的"脚本位置"输入框
-db,--default-browser可选使用系统默认浏览器打开界面(可能是 Chrome),不主动搜索 Chrome
-nu,--no-ui可选不尝试打开界面,仅在终端打印应用托管地址
-c [CONFIG],--config [CONFIG]可选指定用于预填充界面的 JSON 配置文件(可通过界面"设置"标签页生成)
-o [POLKU],--output-dir [POLKU]可选设置默认输出目录,之后仍可在界面中更改
-bdo [KANSION_POLKU],--build-directory-override [KANSION_POLKU]可选覆盖默认构建目录,当需要将构建目录加入杀毒软件白名单时非常有用
-lang [KIELIKOODI],--language [KIELIKOODI]可选提示界面打开时默认使用的语言,语言代码见下文"语言支持"

注意:如果你是本地源码运行(未安装),则必须用python -m auto_py_to_exe代替auto-py-to-exe命令。

参数在源码中的实现

以上参数的实际解析逻辑位于 auto_py_to_exe/main.py 的run()函数中,对照源码可以了解每个参数的内部行为:

  • 文件名(positional):通过validation.argparse_file_exists校验文件是否存在,解析后存入config.package_filename,界面初始化时由initialise()返回给前端填充脚本位置。
  • -db/--default-browser:将config.ui_open_mode设为UIOpenMode.DEFAULT_BROWSER(枚举定义见 auto_py_to_exe/config.py)。随后 auto_py_to_exe/ui.py 的start()会据此依次尝试 Chrome → Edge → 默认浏览器,最终以mode="user default"启动 Eel。
  • -nu/--no-ui:将打开模式设为UIOpenMode.NONE。此时程序不打开浏览器,仅在终端打印类似Server starting at http://localhost:PORT/index.html的地址,并提示用Ctrl+C手动结束进程。
  • -c/--config:JSON 文件经validation.argparse_file_json校验后存入config.supplied_ui_configuration。界面加载完成后,auto_py_to_exe/web/js/initialise.js 会调用importConfiguration()把配置逐项写入表单。
  • -o/--output-dir:默认值为"output",解析后经os.path.abspath()转为绝对路径存入config.default_output_directory,作为界面上"输出目录"输入框的初始值。
  • -bdo/--build-directory-override:默认值为None。在 auto_py_to_exe/main.py 中会校验该目录必须真实存在(os.path.isdir),否则抛出ValueError。未指定时,程序会通过tempfile.mkdtemp()创建临时构建目录,并在应用退出时清理。
  • -lang/--language:作为语言提示传入前端,由 auto_py_to_exe/web/js/i18n.js 的翻译映射在初始化时执行translate(initialisationData.languageHint)。

此外,源码还额外支持两个 README 表格之外的参数:--logging-level(可选DEBUG/INFO/WARNING/ERROR/CRITICAL,默认ERROR,控制终端日志级别)和-v/--version(打印版本号)。

语言支持

界面内置了丰富的多语言翻译映射,芬兰语(fi)也在其中,例如 "Skriptin sijainti"(脚本位置)、"Muunna .py-tiedosto .exe-tiedostoksi"(转换 .py 为 .exe)等完整界面文案均可通过-lang fi在启动时指定为默认语言;不指定时程序会尝试匹配浏览器默认语言。完整的翻译键定义可查阅 auto_py_to_exe/web/js/i18n.js。

JSON 配置:导入与导出

如果每次打包都要在界面里重复填写相同的信息,可以把当前界面状态导出为 JSON 文件,之后随时导入复用。

  • 在界面"设置"(Konfiguraatio)标签页中点击Export Config To JSON File,当前所有选项会被序列化保存;
  • 需要复用配置时,点击Import Config From JSON File或在启动时用-c指定该文件,界面字段即被自动填充。

这一导出功能的实现位于 auto_py_to_exe/ui.py(import_configuration/export_configuration)与 auto_py_to_exe/web/js/importExport.js(_collectDataToExport),导出时前端会调用getNonPyinstallerConfiguration()收集非 PyInstaller 专属选项,并统一标注版本字段"version": "auto-py-to-exe-configuration_v1"。

仓库中的 examples/1-basic/auto-py-to-exe-config.json 展示了一份最小配置的真实结构:

{ "version": "auto-py-to-exe-configuration_v1", "pyinstallerOptions": [ { "optionDest": "filenames", "value": "./main.py" }, { "optionDest": "onefile", "value": true }, { "optionDest": "console", "value": true } ] }

其中pyinstallerOptions数组的每一项都对应一个 PyInstaller 选项:optionDest是该选项的 argparse 目标名,value是用户填写的值。onefile对应单文件模式,console对应是否显示控制台窗口。导入时,前端会遍历该数组,并通过配置设置器(configurationSetters)逐项回填界面(见 auto_py_to_exe/web/js/importExport.js)。

关于输出目录的注意事项

一个容易踩坑的细节是:导出的 JSON 默认不保存输出目录。这是因为配置文件常在不同电脑间传递,而不同机器的目录结构各不相同,硬编码路径反而会导致导入后路径无效。

如果你确实希望把输出目录固化在配置文件中,需要手动在 JSON 中新增nonPyinstallerOptions键并填入outputDirectory字段,例如:

{ "version": "auto-py-to-exe-configuration_v1", "pyinstallerOptions": [ { "optionDest": "filenames", "value": "./main.py" }, { "optionDest": "onefile", "value": true }, { "optionDest": "console", "value": true } ], "nonPyinstallerOptions": { "outputDirectory": "D:/builds/my-app", "increaseRecursionLimit": true, "manualArguments": "" } }

从 auto_py_to_exe/web/js/importExport.js 的导入逻辑可以看到,nonPyinstallerOptions下还支持increaseRecursionLimit(是否提升递归限制)与manualArguments(手动附加的原始参数)两个可配置项。

打包过程中的底层细节

理解打包内部机制有助于排查问题。一次打包在 auto_py_to_exe/packaging.py 的package()函数中按以下步骤执行:

  1. 构建目录准备:PyInstaller 的distpath、workpath、specpath被统一指向config.temporary_directory下的application、build与根目录,产物先在这里生成,避免污染项目目录。
  2. 递归限制处理:若界面勾选"增加递归限制"(Increase Recursion Limit),则执行sys.setrecursionlimit(5000);否则恢复为 Python 默认值(config.DEFAULT_RECURSION_LIMIT)。深层嵌套的依赖图有时会触发RecursionError,此时开启该选项即可。
  3. 执行 PyInstaller:用shlex.split()拆分前端生成的命令行字符串,追加--distpath、--workpath、--specpath等覆盖参数后调用run_pyinstaller。
  4. 移动产物:打包成功后,__move_package()会把dist目录中的全部产物移动到界面指定的输出目录(默认output);若目标位置已有同名文件或目录,会被先删除再移动。若打包失败,产物不会被移动,函数返回False。

对应地,tests/test_packaging.py 中的test_basic_packaging在 Windows 上验证了完整链路:以--onedir --nowindowed模式打包一个打印"Test"的脚本,断言产物目录与 exe 文件存在,并实际执行 exe 校验其输出为Test。

Python 2.7 兼容性说明

PyInstaller 从v4.0(2020 年 8 月 9 日发布)起不再支持 Python 2.7。如果你仍需在 Python 2.7 下使用 auto-py-to-exe,可以安装仍支持 Python 2.7 的旧版 PyInstaller:

  1. 先卸载当前已安装的 PyInstaller;
  2. 安装最后一个支持 Python 2.7 的版本:
$ python -m pip install pyinstaller==3.6

之后即可正常使用本工具。需要说明的是,这一兼容路径仅适用于明确需要在 Python 2.7 环境中构建的场景;在新项目上仍建议使用受支持的 Python 3.6–3.12。

运行测试

仓库的自动化测试位于tests/目录,使用 pytest 运行。要执行测试套件:

$ pip install pytest $ pip install -e . $ pytest

测试覆盖了包的导入正确性(tests/test_imports.py)、对 Eel 与 PyInstaller 相关接口的依赖校验(tests/test_library_dependencies.py)以及 Windows 上的基本打包端到端流程(tests/test_packaging.py,由os_allow(["Windows"])装饰器限定仅在 Windows 执行)。

常见问题排查

如果在使用打包产物或工具本身时遇到问题,官方维护者专门撰写过一篇关于使用 auto-py-to-exe 常见问题的帮助文章,系统讲解了 Python 脚本打包时需要注意的知识点以及常见报错的修复方法,适合作为第一排查入口。

若确认是工具本身的缺陷,可以到项目仓库提交 issue:选择 "Bug report" 模板(点击 "Get started")并完整填写。填写时务必做到:

  • 准确描述问题现象;
  • 给出可复现问题的完整步骤;
  • 附带最小可复现示例(Minimal Reproducible Example);
  • 说明你预期应该发生的结果。

若问题只出现在你自己的特定程序上(而非工具本身),则不建议在项目仓库页提交 issue,而是更适合在帮助文章下留言、在演示视频下评论或发起新的讨论。缺少上述信息时,问题定位将花费更长时间。

仓库还内置了多种语言的 README 可供对照阅读,例如 README-Chinese.md(中文)、README-Turkish.md(土耳其语)与 README-Persian.md(波斯语);完整版本演进记录见 CHANGELOG.md。

小结

auto-py-to-exe 的价值在于把 PyInstaller 的配置复杂度收进一个可视化界面:四种安装方式覆盖了"装了就用到"“追新源码”和"免安装运行"三类场景;七类命令行参数(含两个源码级扩展参数)足以满足脚本预填、无界面服务、配置复用、输出目录定制、构建目录覆盖与语言提示等日常诉求;JSON 配置让重复打包一键恢复;而对递归限制、构建目录和产物移动等底层细节的了解,则能在遇到打包报错时帮你更快定位问题。结合仓库中的示例脚本与测试用例,现在就可以动手把第一个.py脚本转换成.exe了。

  • 开发工具
  • 桌面应用

【免费下载链接】auto-py-to-exe

Converts .py to .exe using a simple graphical interface

项目地址:https://gitcode.com/gh_mirrors/au/auto-py-to-exe
点击查看免费下载

相关推荐

上一篇:3分钟快速汉化GitHub Desktop:终极中文界面解决方案指南
下一篇:Meep FDTD电磁仿真:从入门到精通的终极指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询