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

使用PyInstaller构建时能否指定Python架构?适配新Mac问题咨询

在Intel Mac上用PyInstaller构建的包在Apple Silicon Mac上运行报错的解决方案

我用旧款Intel架构Mac,通过PyInstaller构建分发包,这些包在Intel机器上能正常运行,但在新款Mac上报错:

zsh: killed /Users/...../our_distr_folder

我推测分发包里包含x86版本的Python,想问能不能把它替换成arm64e版本?或者能不能创建基于arm64 Python的虚拟环境(这个环境可能在我的Intel机器上跑不起来)?

我已经安装了两种架构的Python,执行命令:

file $(which /usr/bin/python3)

输出结果是:

/usr/bin/python3 (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/bin/python3 (for architecture arm64e): Mach-O 64-bit executable arm64e

解决方案

1. 直接替换分发包中的Python架构不可行

手动替换分包里的Python二进制文件风险极高,PyInstaller打包时会把Python解释器和所有依赖库绑定在一起,依赖库也都是x86架构的,单独替换Python解释器会导致依赖不兼容,依然无法正常运行。

2. 在Intel Mac上创建arm64 Python虚拟环境并构建包

可以借助Rosetta 2在Intel Mac上模拟arm64环境,创建对应架构的虚拟环境并打包,步骤如下:

  • 开启终端的Rosetta模式:右键终端应用→显示简介→勾选“使用Rosetta打开”,重启终端。
  • 在该终端中创建arm64架构的虚拟环境:
    arch -arm64 /usr/bin/python3 -m venv arm64_venv
    
  • 激活虚拟环境:
    source arm64_venv/bin/activate
    
  • 安装PyInstaller和项目依赖:
    pip install pyinstaller [你的项目依赖包]
    
  • 使用该环境下的PyInstaller构建分发包,生成的包即为arm64架构,可直接在Apple Silicon Mac上运行。

3. 构建同时兼容两种架构的通用二进制包

如果需要包同时支持Intel和Apple Silicon Mac,可分别构建两个架构的包后合并:

  • 在原生Intel终端构建x86版本的包。
  • 在Rosetta终端的arm64虚拟环境中构建arm64版本的包。
  • 使用lipo工具合并两个可执行文件:
    lipo -create x86_version/dist/your_app arm64_version/dist/your_app -output universal_app
    
    注意:需确保两个环境下的依赖版本完全一致,否则合并后可能出现运行异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 11:37:16