You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PyInstaller打包的Python应用在macOS Big Sur上无法运行

解决方案

1. 更换打包命令

你直接执行pyinstaller --windowed --onefile main.py时,PyInstaller会生成全新的spec文件,覆盖你提前编写好的配置,导致你声明的资源文件、依赖模块没有被打包进应用,这是首要问题。
正确的打包命令是直接基于你写好的spec文件执行:

pyinstaller main.spec

2. 适配打包后的资源路径

macOS下.app包运行时的工作目录和开发环境不一致,直接用相对路径读取data.db、logo.png会触发文件不存在的错误,导致程序闪退。
在你的代码中加入路径适配逻辑:

import sys
import os

def fetch_resource(relative_path):
    # 适配PyInstaller打包后的运行环境
    if hasattr(sys, "_MEIPASS"):
        base_dir = sys._MEIPASS
    else:
        base_dir = os.path.abspath(".")
    return os.path.join(base_dir, relative_path)

所有读取资源的位置都替换为该函数返回的路径,例如:

# 原代码:logo = PhotoImage(file="logo.png")
logo = PhotoImage(file=fetch_resource("logo.png"))
# 原代码:conn = sqlite3.connect("data.db")
conn = sqlite3.connect(fetch_resource("data.db"))

3. 排查其他问题

如果修改后仍无法正常启动,可通过以下方式定位问题:

  • 打开终端执行命令直接运行.app的可执行文件,查看错误输出:
    ./dist/main.app/Contents/MacOS/main
    
  • 若提示无法验证开发者:打开「系统偏好设置」-「安全性与隐私」-「通用」,允许该应用运行
  • 暂时将spec文件中的console=False修改为console=True后重新打包,运行时会弹出终端窗口打印报错信息,问题解决后再改回console=False即可

内容的提问来源于stack exchange,提问作者JBrown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 07:57:05