容器中因Numpy导入错误无法加载Databricks问题求助
解决Lambda Docker部署中Numpy导入报错问题
问题根源
报错提示不能从numpy源码目录导入,本质是pip安装依赖时使用了源码编译方式,导致Lambda任务目录(/var/task)下残留numpy的源码文件,运行时Python解释器误将该目录识别为numpy的源码根目录。
修复方案
1. 修改Dockerfile的pip安装命令
在pip安装时强制使用预编译wheel包,避免源码残留,同时清理缓存减少镜像体积:
FROM public.ecr.aws/lambda/python:3.9 COPY requirements.txt . RUN pip install -r requirements.txt --target "${LAMBDA_TASK_ROOT}" --no-cache-dir --only-binary :all: COPY lambda_function.py ${LAMBDA_TASK_ROOT} CMD [ "lambda_function.lambda_handler" ]
2. 验证依赖安装正确性
构建镜像后,进入容器检查numpy是否能正常导入:
# 构建镜像 docker build -t lambda-databricks . # 进入容器测试 docker run --rm -it lambda-databricks bash python -c "import numpy; print('Numpy版本:', numpy.__version__)"
如果能正常输出版本号,说明依赖安装没问题。
3. 优化requirements.txt
为依赖指定最小稳定版本,避免自动安装不稳定的开发版:
databricks-sql-connector>=2.0.0 numpy>=1.21.6 pandas>=1.3.5
测试验证
重新构建镜像并部署到Lambda,触发函数测试,确认numpy导入报错消失,Databricks连接逻辑正常执行。
内容的提问来源于stack exchange,提问作者Arkadi w
相关产品推荐
相关产品推荐

