Django部署到PythonAnywhere时出现WSGI运行错误NameError如何解决
Django部署PythonAnywhere触发WSGI的NameError解决方法
核心问题定位
报错指向的是PythonAnywhere平台自动生成的系统级WSGI配置文件/var/www/dhruv354_pythonanywhere_com_wsgi.py,你贴出的是项目目录内自行编写的wsgi.py,二者不是同一个文件。平台配置文件的第30行调用get_wsgi_application()之前没有导入对应函数,因此触发未定义错误。
修复操作
方案1:修改平台生成的WSGI配置文件
- 登录PythonAnywhere后台,进入「Web」选项卡,找到「Code」板块下的「WSGI configuration file」入口,点击进入编辑
- 保留文件原有虚拟环境激活相关代码,替换原有Django加载逻辑为如下内容:
import os import sys path = '/home/dhruv354/Django-grocery/' if path not in sys.path: sys.path.append(path) os.environ['DJANGO_SETTINGS_MODULE'] = 'ReadingRight.settings' from django.core.wsgi import get_wsgi_application from whitenoise.django import DjangoWhiteNoise application = DjangoWhiteNoise(get_wsgi_application())
- 保存文件后,回到Web选项卡点击「Reload」按钮重启应用即可。
方案2:直接导入项目内的WSGI实例
如果不想重复维护两份WSGI配置,可以在平台的WSGI配置文件中直接导入你项目内的实例,代码如下:
import sys path = '/home/dhruv354/Django-grocery/' if path not in sys.path: sys.path.append(path) # 替换your_project_name为你的Django项目根目录名称 from your_project_name.wsgi import application
额外排查项
如果修改后仍存在报错,按顺序检查以下内容:
- 填写的项目根目录路径大小写、拼写和实际文件系统完全一致
- 应用绑定的虚拟环境已经安装Django、whitenoise等全部项目依赖
ReadingRight.settings路径正确,对应你项目内settings文件的实际位置
内容的提问来源于stack exchange,提问作者dhruv singhal
相关产品推荐
相关产品推荐

