运行dbt时出现`Profile() takes no arguments`错误该如何解决?
排查解决步骤
- 对齐dbt版本
先确认其他正常使用人员的dbt版本,若对方使用1.x及以上版本,你本地的0.20.0属于过旧版本,存在配置语法不兼容问题,直接安装团队统一的版本即可:pip install dbt-core==<团队统一版本号> dbt-<数据源适配器名>==<团队统一版本号> - 排查依赖包冲突
执行pip list | grep dbt查看本地所有dbt相关包的版本,确保dbt-core与对应数据源适配器(如dbt-postgres、dbt-bigquery等)的主版本号完全一致。如果存在版本不匹配的情况,先卸载所有dbt相关包后重新安装对应版本。 - 校验本地配置文件合法性
虽然配置文件其他人可正常使用,仍需检查本地文件是否在拷贝、保存过程中引入了不可见特殊字符或者缩进错误:
执行cat -A /home/USER/dbt/profiles.yml查看是否存在隐藏字符,也可使用yamllint工具校验yaml语法,同时可对比本地配置文件与正确版本的MD5值,确认内容完全一致。 - 排查环境变量干扰
执行env | grep DBT查看是否设置了DBT_PROFILES_DIR、DBT_PROJECT_DIR等相关环境变量,这类变量会覆盖dbt默认的配置加载路径,导致读取到错误的配置内容。 - 重建干净的Python虚拟环境
若上述步骤均未解决问题,在pyenv中新建独立的虚拟环境,仅安装dbt相关依赖后重试:pyenv virtualenv 3.9.7 dbt-clean-env pyenv activate dbt-clean-env pip install dbt-core==0.20.0 dbt-<你的数据源适配器名>==0.20.0 dbt debug
内容的提问来源于stack exchange,提问作者RexFuzzle
相关产品推荐
相关产品推荐

