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

含requests模块的Python应用经py2app打包后启动崩溃求助

解决py2app打包含requests模块的.app崩溃问题

我之前也碰到过类似的情况,结合你的环境配置和错误信息,给你几个可行的排查和解决方向:

1. 确保requests的所有依赖库被正确打包

requests不是单一模块,它依赖urllib3、certifi、chardet、idna这些核心库,py2app有时候不会自动检测并打包全部依赖。你需要把这些依赖也添加到打包配置里:

修改你的Setup.py的OPTIONS部分:

OPTIONS = {
    "argv_emulation": True,
    "includes": ['requests', 'urllib3', 'certifi', 'chardet', 'idna'],
    "packages": ['requests', 'rumps', 'urllib3', 'certifi', 'chardet', 'idna']
}

2. 清理打包缓存后重新构建

py2app会缓存之前的构建文件,旧缓存可能导致依赖缺失或冲突。先执行以下命令清理缓存:

rm -rf build dist

然后重新运行打包命令:

python setup.py py2app

3. 查看详细错误日志定位问题

仅退出码255无法判断具体原因,你可以直接在终端运行.app内部的可执行文件,获取详细的报错信息:

./dist/TestApp.app/Contents/MacOS/TestApp

运行后会输出具体的错误(比如某个模块找不到、路径错误等),这能帮你精准定位问题所在。

4. 手动处理certifi证书路径问题

requests依赖certifi提供的CA证书,打包后可能出现证书路径无法识别的情况。你可以在你的test.py开头添加以下代码,手动指定证书路径:

import certifi
import os
# 强制指定requests使用certifi的证书
os.environ['REQUESTS_CA_BUNDLE'] = certifi.where()

5. 确认Python与py2app版本兼容性

虽然py2app 0.21官方宣称支持Python 3.6,但你可以尝试更新py2app到适合Python 3.6的最新兼容版本(比如0.24,注意不要超过支持3.6的版本),更新命令:

pip install --upgrade py2app==0.24

更新后再重新打包测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 14:32:37