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

本地正常运行的Django应用部署服务器后manage.py报语法错误

解决Python 2.7环境下manage.py的SyntaxError问题

哦,这个问题我之前帮朋友排查过!你遇到的语法错误根源很明确——raise ... from exc是Python 3.x才引入的语法特性,而你服务器上跑的是Python 2.7,它完全不支持这种写法。

为什么本地运行正常呢?虽然你说自己用的是Python 2.7和Django 1.11,但大概率你本地的manage.py是Django 1.11原生生成的(它完美适配Python 2.7),而上传到服务器的版本可能是不小心从更高版本的Django项目里复制过来的,或者用新版本Django重新生成过,所以带了Python 3专属的语法。

给你两个简单的解决方案:

方案1:替换为Django 1.11兼容的manage.py

直接把服务器上的manage.py换成下面这段适配Python 2.7的代码(这就是Django 1.11默认生成的manage.py内容):

import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "chatbot.settings")
    try:
        from django.core.management import execute_from_command_line
    except ImportError:
        try:
            import django
        except ImportError:
            raise ImportError(
                "Couldn't import Django. Are you sure it's installed and "
                "available on your PYTHONPATH environment variable? Did you "
                "forget to activate a virtual environment?"
            )
        raise
    execute_from_command_line(sys.argv)

方案2:修改报错的语法行

如果你不想替换整个文件,只需要把报错的那一行改了就行——删掉from exc部分,把异常抛出语句改成Python 2.7能识别的写法:

except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        )

这样去掉Python 3的专属语法后,Python 2.7就能正常解析这个文件了。

最后多嘴提一句:Python 2.7和Django 1.11都已经停止维护好几年了,不仅没有安全补丁,很多新的依赖库也不再支持它们,建议尽早升级到Python 3和对应的LTS版本Django(比如Django 3.2,它支持Python 3.6到3.10),避免后续踩更多坑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:41:39