Apple M1芯片环境下Django执行runserver后进程突然被终止问题求助
解决M1芯片上Django项目启动被SIGKILL终止的问题
针对你遇到的情况——更新依赖后初期正常,后续启动项目被SIGKILL(退出码137)终止,即使内存还有剩余,我整理了几个在M1 Mac上常见的排查和解决思路:
1. 重建虚拟环境,排除依赖残留问题
M1的arm64架构对依赖的兼容性要求比较严格,有时候旧虚拟环境里可能混有x86兼容层安装的库,或者依赖缓存有问题。建议完全重建虚拟环境:
- 先删除现有虚拟环境:
rm -rf .venv - 重新创建arm64原生的虚拟环境:
python3 -m venv .venv - 激活虚拟环境:
source .venv/bin/activate - 重新安装所有依赖:
pip install -r requirements.txt
2. 升级兼容性存疑的依赖版本
你的requirements里有些库的版本比较老旧,可能对M1的支持不完善:
- Django 3.1.1:这个版本发布于M1推出之前,建议升级到3.2.x系列(LTS版本,对arm架构有更好的适配),执行命令:
pip install django==3.2.25 - psycopg2-binary 2.8.6:早期版本在M1上可能存在编译或运行问题,尝试升级到兼容arm64的版本:
pip install psycopg2-binary==2.9.9 - django-summernote 0.8.11.6:这个版本也比较老,建议升级到最新稳定版:
pip install django-summernote==0.8.20.0
3. 排查单个第三方库的问题
有时候是某个特定库在启动时占用异常内存或者触发架构兼容问题,可以逐个禁用排查:
- 先在
settings.py中注释掉django-debug-toolbar的相关配置(包括INSTALLED_APPS、MIDDLEWARE和DEBUG_TOOLBAR_CONFIG),启动项目看是否还会被kill - 如果没问题,再尝试禁用
django-summernote,以此类推,找到导致问题的具体库,再针对性升级或替换
4. 检查启动时的内存峰值与系统限制
虽然你看到剩余内存有5GB,但Django启动时可能会瞬间占用大量内存(比如加载所有app、初始化数据库连接等),超过系统的某个隐性限制:
- 启动项目时用
htop实时监控内存变化,看看启动瞬间的内存占用峰值 - 在PyCharm中,进入Run/Debug Configurations,给Python解释器添加内存参数,比如
-Xmx4096m(设置最大堆内存为4GB),尝试缓解内存压力
5. 升级Python版本到稳定版
Python 3.9.1是比较早期的3.9版本,在M1上可能存在一些未修复的兼容性bug,建议升级到3.9.x的最新稳定版(比如3.9.18),或者直接升级到3.10/3.11版本(这些版本对arm64的支持更完善)
按上面的步骤逐步排查,应该能定位并解决问题。
内容的提问来源于stack exchange,提问作者roohix
相关产品推荐
相关产品推荐

