Vercel部署Python项目遇ModuleNotFoundError:找不到data模块
解决同目录Python模块导入失败的问题
1. 检查当前工作目录
Python查找模块时,默认从运行脚本的当前工作目录和系统路径里找。如果你不是在/api目录下运行脚本,自然找不到同目录的data.py。
解决:
打开终端,切换到/api目录后再运行脚本:
cd /你的/api目录的绝对路径 python 你的脚本文件名.py
2. 添加__init__.py文件
部分环境(如部分服务器、旧版工具)要求把目录标记为Python包才能识别内部模块,这时候需要在/api目录下新建一个空的__init__.py文件。
解决:
在/api文件夹里创建名为__init__.py的空文件,无需写入任何内容,Python就会把该目录当作可识别的包。
3. 使用相对导入(适用于脚本被外部调用的情况)
如果你的脚本是被/api目录外的文件调用的,直接from data import *会失效,需要用相对导入语法。
解决:
把导入语句修改为:
from .data import *
注意开头的.,代表当前目录。这种方式需要确保/api目录有__init__.py,且调用时用包的方式运行(比如python -m api.你的脚本名,而不是直接python api/你的脚本名.py)。
4. 手动添加系统路径(兜底方案)
如果以上方法都无效,可以手动把/api目录加入Python的系统查找路径。
解决:
在脚本最开头添加以下代码:
import sys import os # 获取当前脚本所在目录的绝对路径 current_dir = os.path.dirname(os.path.abspath(__file__)) # 将目录添加到Python系统路径 sys.path.append(current_dir) from data import * # 后续代码保持不变
你的代码调整示例
修改后的开头代码可以是这样(以添加系统路径为例):
import sys import os current_dir = os.path.dirname(os.path.abspath(__file__)) sys.path.append(current_dir) from data import * import numpy as np from http.server import BaseHTTPRequestHandler from urllib.parse import urlparse, parse_qs import json # 后面的handler类和do_GET方法不变
内容的提问来源于stack exchange,提问作者beginnersLuck.css
相关产品推荐
相关产品推荐

