PythonAnywhere部署网站报ModuleNotFoundError如何调试排查
PythonAnywhere部署报
ModuleNotFoundError: No module named 'starclone'解决方法 报错原文如下:
Error running WSGI application
ModuleNotFoundError: No module named 'starclone'
File "/var/www/wholes_pythonanywhere_com_wsgi.py", line 16, in
application = get_wsgi_application()
核心原因
WSGI进程启动时,Python的模块搜索路径里没有包含starclone包所在的项目根目录,或是运行环境、文件上传存在问题,导致解释器找不到对应模块。
排查解决步骤
- 修正WSGI文件的路径配置
打开报错提示的/var/www/wholes_pythonanywhere_com_wsgi.py文件,检查路径配置段,必须将包含starclone文件夹的上一级项目根目录加入sys.path,参考配置如下:
注意路径层级不要写错:如果import os import sys # 替换为你自己的项目实际存放绝对路径 PROJECT_ROOT = "/home/你的用户名/你的项目文件夹名" if PROJECT_ROOT not in sys.path: sys.path.insert(0, PROJECT_ROOT) # 后续Django/Flask启动配置保持原有逻辑即可 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "starclone.settings") from django.core.wsgi import get_wsgi_application application = get_wsgi_application()starclone的绝对路径是/home/wholes/blog/starclone,那要加入sys.path的是/home/wholes/blog,不是内层的/home/wholes/blog/starclone,层级错了一样会触发找不到模块的报错。 - 核对虚拟环境匹配性
如果开发时用了虚拟环境,先在PythonAnywhere的Web管理页找到Virtualenv配置项,填入你在平台上创建的对应虚拟环境的绝对路径;再打开对应虚拟环境的Bash终端,确认所有项目依赖都已经安装完成,避免出现WSGI用系统默认Python运行、找不到虚拟环境内安装的包的问题。 - 校验项目文件完整性
进入平台的文件管理器,打开你刚才配置的项目根目录,确认:starclone文件夹确实存在于该目录下starclone文件夹内有__init__.py文件(空文件也可以,Python需要这个文件识别文件夹为可导入包)- 如果是通过Git拉取的代码,确认
starclone目录没有被写入.gitignore,拉取的分支正确没有缺文件
- 重载服务生效
所有配置修改完成后,回到Web管理页点击对应站点的Reload按钮重载服务,再访问站点验证报错是否消失。
常见避坑提示
- 不要把项目代码直接散放在用户根目录
/home/你的用户名/下,单独建独立的项目文件夹存放,能大幅降低路径写错的概率 - 修改WSGI配置、虚拟环境配置、项目代码后必须点Reload,否则配置不会生效
- 如果同时部署了多个站点,确认你改的WSGI文件和当前访问的站点是对应关系,别改混了其他站点的配置
内容的提问来源于stack exchange,提问作者Oyewole
相关产品推荐
相关产品推荐

