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

Python3虚拟环境启动Django项目时遇SyntaxError报错求助

解决Django manage.py中) from exc的SyntaxError问题

这个问题我之前也碰到过,核心原因其实是你执行manage.py的时候,实际调用的不是虚拟环境里的Python3.6,而是系统里的低版本Python(大概率是Python2)。

为什么会报错?

raise ImportError(...) from exc这种带from的异常链语法是Python 3.3及以上版本才支持的特性,Python 2.x完全不认识这个语法,所以当用Python2执行这个脚本时,就会直接抛出SyntaxError: invalid syntax。

而你在命令行里直接运行python能正常导入Django,是因为此时调用的是虚拟环境里的Python3.6——但直接运行./manage.py时,Windows系统会根据文件关联规则,调用默认的Python解释器(如果你的系统里装了Python2,它可能被设为默认),这就导致了矛盾的现象。

解决方法

1. 显式用虚拟环境的Python运行manage.py

激活虚拟环境后,不要直接用./manage.py,而是显式指定python命令来运行脚本:

python manage.py

虚拟环境激活后,系统PATH会优先指向虚拟环境的Scripts目录,所以这里的python就是你虚拟环境里的3.6版本,能正确识别异常链语法。

2. 确认当前环境的Python版本

激活虚拟环境后,先运行以下命令确认版本:

python --version

输出必须是Python 3.6.3,如果不是,说明虚拟环境激活不生效——可以尝试关闭当前终端,重新打开后再执行env/scripts/activate激活虚拟环境。

3. 极端情况:直接指定虚拟环境Python的完整路径

如果上面的方法还是不行,可以直接用虚拟环境Python的绝对路径来运行:

../env/Scripts/python.exe manage.py

这样能100%确保用的是虚拟环境里的Python解释器。

额外验证

你可以在manage.py的最顶部加一行代码,打印当前Python解释器的路径和版本,帮助排查:

import sys
print(sys.executable, sys.version)

然后分别运行./manage.py和python manage.py,对比输出的路径和版本,就能清楚看到差异了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:56:49