PythonAnywhere部署Flask应用时WSGI配置报错:找不到'app'模块
看起来你遇到的问题核心是WSGI配置里的模块引用和实际项目文件不匹配,我来帮你一步步排查解决:
1. 修正WSGI配置的导入语句
你当前的WSGI配置里注释掉的导入是from app import app as application,但从你提到的截图来看,你的应用主文件是server.py而不是app.py——这就是为什么会出现ModuleNotFoundError: No module named 'app'的直接原因。
把WSGI配置里的导入语句改成:
from server import app as application # noqa
2. 确认路径配置的正确性
检查你设置的path = '/home/azanbade/path/to/Word-finder'是否准确指向你的项目根目录(也就是包含server.py的那个文件夹)。你可以在PythonAnywhere的控制台里执行以下命令验证:
ls /home/azanbade/path/to/Word-finder
如果输出里能看到server.py,说明路径是对的;如果看不到,就需要调整路径到正确的文件夹。
3. 确保项目结构符合Python模块规范
在你的项目根目录下创建一个空的__init__.py文件(可以通过PythonAnywhere控制台执行touch /home/azanbade/path/to/Word-finder/__init__.py来创建),这样Python才会把这个目录识别为可导入的模块。
另外要确认server.py里确实定义了Flask应用实例,比如类似这样的代码:
from flask import Flask app = Flask(__name__) # 你的路由和其他业务代码... if __name__ == '__main__': app.run(debug=True)
4. 避免启动开发服务器的冲突
一定要确保server.py里的app.run()只在本地开发时运行,也就是用if __name__ == '__main__':包裹起来。如果直接写app.run()没有这个判断,PythonAnywhere的WSGI进程会尝试启动Flask的开发服务器,导致配置失效。
修改后的完整WSGI配置示例:
import sys # 确保这个路径是你的项目根目录(包含server.py的文件夹) path = '/home/azanbade/path/to/Word-finder' if path not in sys.path: sys.path.append(path) # 从你的主文件server中导入Flask应用实例 from server import app as application # noqa
做完这些修改后,重启PythonAnywhere上的Web应用,应该就能解决模块找不到的问题了。
内容的提问来源于stack exchange,提问作者rudehlabya




