AWS EC2部署Django执行migrate命令报SyntaxError如何解决
问题根因
报错的核心原因是AWS EC2的Ubuntu系统默认Python版本过低:从报错路径可以看到你当前用的是Python3.5,而变量类型标注语法是Python3.6版本才引入的特性,你安装的asgiref、Django版本已经停止对Python3.5的支持,所以直接触发语法报错。你的Windows开发环境Python版本更高,所以可以正常运行。
修复步骤
- 第一步:安装符合要求的Python版本,建议至少安装Python3.8及以上版本,不要修改系统默认的python3指向,避免破坏系统自带工具:
sudo apt update sudo apt install python3.8 python3.8-venv python3.8-dev -y
- 第二步:为项目创建独立虚拟环境,隔离系统Python和项目依赖:
进入项目根目录后执行以下命令:
# 创建虚拟环境 python3.8 -m venv venv # 激活虚拟环境,激活后终端前缀会显示(venv)标识 source venv/bin/activate
- 第三步:对齐项目依赖版本
首先在你的Windows开发环境执行以下命令导出依赖清单:
pip freeze > requirements.txt
将生成的requirements.txt提交到GitHub,在服务器拉取最新代码后,在已激活虚拟环境的状态下执行:
pip install -r requirements.txt
- 第四步:重新执行迁移命令,注意不要加sudo,sudo会调用系统全局Python版本,无法用到虚拟环境的配置:
python manage.py migrate
注意事项
- 所有项目相关的Python、Pip操作都需要先激活对应虚拟环境再执行,保证版本一致
- 不要随意使用sudo执行Python相关命令,除非你明确需要修改系统全局的Python包配置
内容的提问来源于stack exchange,提问作者C-Bizz
相关产品推荐
相关产品推荐

