PythonAnywhere部署Flask报relative import无已知父包错误如何解决
问题解决方案
错误原因
你当前的报错是因为PythonAnywhere的WSGI配置文件中的导入路径与你的项目文件结构不匹配:你的app = Flask(__name__)定义在mysite/__init__.py中,而非配置中默认读取的main.py,导致解释器无法定位到app变量。
解决步骤
- 登录PythonAnywhere后台,进入「Web」标签页,点击对应应用的「WSGI configuration file」进入编辑界面
- 找到文件中的路径配置和导入代码段,示例如下:
import sys # 下方路径替换为你自己的项目实际路径,格式为 /home/你的PythonAnywhere用户名/mysite path = '/home/xxx/mysite' if path not in sys.path: sys.path.append(path) from main import app as application
- 将最后一行的导入语句替换为以下内容即可:
import app as application
如果替换后仍报错,可修改路径配置后再调整导入语句:
import sys # 此处路径改为项目父目录 path = '/home/xxx' if path not in sys.path: sys.path.append(path) from mysite import app as application
附加说明
你main.py中定义的Blueprint需要在mysite/__init__.py中注册才能生效,注册代码示例如下:
# 写入 mysite/__init__.py 文件中 from main import main as main_blueprint app.register_blueprint(main_blueprint)
验证生效
保存WSGI配置文件后,回到Web标签页点击「Reload」按钮重启应用,刷新应用页面即可正常访问。
内容的提问来源于stack exchange,提问作者Jonathan Chen
相关产品推荐
相关产品推荐

