Apache Airflow DAG报错ModuleNotFoundError:已在requirements.txt添加snowflake模块仍找不到
解决Apache Airflow中
snowflake-connector-python模块找不到的问题 你遇到的错误:
Broken DAG: [/usr/local/airflow/dags/my_dag.py] Traceback (most recent call last): File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "/usr/local/airflow/dags/my_dag.py", line 12, in <module> from snowflake.connector.pandas_tools import pd_writer ModuleNotFoundError: No module named 'snowflake'
你已尝试的操作:
- 确认
requirements.txt文件中已包含该模块且格式正确 - 重启Airflow调度器和Web服务器
- 清除Airflow DAG缓存
- 确认使用了正确的Python环境
- 在正确环境中通过
pip安装该模块
额外解决建议:
检查Airflow Worker的Python环境
分布式部署场景下,调度器、Web服务器的Python环境可能和Worker不一致。登录Worker节点,执行pip list确认snowflake-connector-python是否存在,若缺失则在Worker的Python环境中重新安装:pip install snowflake-connector-python若使用虚拟环境,需先激活环境再执行安装命令。
验证
requirements.txt的加载逻辑- 若用Airflow官方Docker镜像,确保
requirements.txt放在指定目录,且容器启动时正确加载:要么在Dockerfile中添加安装命令,要么通过_PIP_ADDITIONAL_REQUIREMENTS环境变量挂载。示例Dockerfile命令:RUN pip install --no-cache-dir -r requirements.txt - 非Docker部署时,直接用Airflow使用的Python解释器测试导入:
若此处报错,说明环境确实未安装到位,重新安装即可。/path/to/airflow/python -c "import snowflake.connector.pandas_tools"
- 若用Airflow官方Docker镜像,确保
排查模块安装权限与路径
部分情况下pip install会因权限问题将模块安装到用户目录,导致Airflow进程无法访问。可以:- 用
--user参数安装:pip install --user snowflake-connector-python - 检查模块安装路径:
确认输出的pip show snowflake-connector-pythonLocation路径在Airflow使用的Python的sys.path中,可通过以下命令查看sys.path:
若不在列表中,可设置/path/to/airflow/python -c "import sys; print('\n'.join(sys.path))"PYTHONPATH环境变量添加该路径,或重新安装到正确位置。
- 用
用
PythonVirtualenvOperator隔离环境
若上述方法无效,可在DAG中使用PythonVirtualenvOperator创建独立虚拟环境执行任务,确保依赖安装正确:from airflow.operators.python import PythonVirtualenvOperator def snowflake_task(): from snowflake.connector.pandas_tools import pd_writer # 编写你的任务逻辑 snowflake_op = PythonVirtualenvOperator( task_id="snowflake_task", python_callable=snowflake_task, requirements=["snowflake-connector-python"], system_site_packages=False, )强制清理安装缓存
缓存可能导致模块无法正确加载,尝试强制重新安装并清除pip缓存:pip install --force-reinstall snowflake-connector-python pip cache purge
内容的提问来源于stack exchange,提问作者Nyk Casseano
相关产品推荐
相关产品推荐

