如何配置vercel.json实现Flask应用本地与部署环境的统一模块导入?
Flask + Vercel 兼容本地与部署环境的模块导入方案
你遇到的问题核心是本地和Vercel部署环境的Python模块搜索路径不一致导致的导入差异,不需要修改vercel.json,通过调整代码里的模块搜索路径就能统一两种环境的导入方式,具体操作如下:
解决步骤
- 在
api/app.py的最开头添加以下代码,将当前文件所在的api目录加入Python的模块搜索路径:
import sys import os # 将api目录添加到Python模块搜索路径 sys.path.append(os.path.dirname(os.path.abspath(__file__)))
- 保持
import my_module的导入写法不变,无需改用相对导入。
原理说明
本地开发时,你大概率是在api目录下直接运行app.py,或者通过Flask命令指定入口时,Python默认会把当前执行目录加入搜索路径,所以import my_module能正常找到同目录下的模块;而Vercel的Python构建环境会以项目根目录作为工作目录执行api/app.py,此时api目录不在默认搜索路径里,导致直接import my_module失败。通过手动把api目录加入搜索路径,就能让两种环境的模块搜索规则保持一致,自然无需修改导入语句。
验证
- 本地环境:按原来的方式启动Flask应用,
import my_module依然正常工作 - Vercel部署:保持现有
vercel.json配置不变,直接部署即可,无需调整导入语法
内容的提问来源于stack exchange,提问作者LittleBobbyTables
相关产品推荐
相关产品推荐

