Cloud Composer导入自定义src模块报No module named 'src'如何解决?
Cloud Composer自定义模块导入报错解决方案
报错原因
Cloud Composer的Airflow运行环境默认仅将/home/airflow/gcs/dags目录加入Python模块搜索路径,你的项目整体存放在dags下的quality-control子目录中,src文件夹不在默认搜索路径范围内,因此Python无法识别到src模块。
可行解决方法(任选其一即可)
- 方案1:修改导入语句前缀
如果将quality-control目录重命名为符合Python模块命名规则的quality_control(不可包含横杠),将导入语句修改为以下格式即可:from quality_control.src.kuzzle import KuzzleQuery, Tag - 方案2:动态添加模块搜索路径(无需修改原有导入逻辑)
在main.py文件最顶部、所有导入语句之前添加以下代码,将当前项目的根目录临时加入Python搜索路径:
添加完成后原有import sys import os sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))from src.kuzzle import KuzzleQuery, Tag语句可正常使用。 - 方案3:调整项目上传结构
直接将src文件夹上传到dags根目录下,不嵌套在quality-control子目录中,此时src处于默认搜索路径范围内,原有导入语句无需修改即可生效。
注意事项
src目录下建议保留空的__init__.py文件,虽然Python 3.3+支持隐式命名空间包,添加该文件可避免出现模块识别异常。- 文件上传到GCS后需等待2-3分钟,等待Cloud Composer完成节点间的文件同步后再验证导入逻辑。
内容的提问来源于stack exchange,提问作者Oussama Fathallah
相关产品推荐
相关产品推荐

