微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何导入远大期望自定义数据源 ValueError: no package specified for (required for relative module names)

如何解决如何导入远大期望自定义数据源 ValueError: no package specified for (required for relative module names)

我的远大期望项目有这个文件夹结构:

great_expectations/
    dataset/
        __init__.py
        oracle_dataset.py
    datasource/
        __init__.py
        oracle_datasource.py
    great_expectations.yml

datasource/__init__.py

from .oracle_datasource import OracleDatasource

dataset/__init__.py

from .oracle_dataset import OracleDataset

great_expectations.yml

datasources:
  db_name:
    credentials: ${db_name}
    data_asset_type:
      class_name: OracleDataset
      module_name: .dataset
    class_name: OracleDatasource
    module_name: .datasource

除了 python 相对导入让我感到非常困惑之外,我也不确定在运行 great_expectations 命令时使用了哪个参考目录。当我尝试:great_expectations suite new 时,我收到错误消息:ValueError: no package specified for '.datasource' (required for relative module names)

我认为上面的 .yml 仍然是尝试以下所有内容后的方法。我猜我不明白需要在 init 或其他地方处理的相对导入。

编辑:我也试过:

datasources:
  db_name:
    credentials: ${db_name}
    data_asset_type:
      class_name: OracleDataset
      module_name: great_expectations.dataset
    class_name: OracleDatasource
    module_name: great_expectations.datasource

The module: 'great_expectations.datasource' does not contain the class: 'OracleDatasource'.

我认为此消息意味着它正在查看 great_expectations 库,我通过尝试包含在库中的类名确认了这一点。

还有这个:

datasources:
  db_name:
    credentials: ${db_name}
    data_asset_type:
      class_name: OracleDataset
      module_name: dataset
    class_name: OracleDatasource
    module_name: datasource

No module named "datasource" Could be found in the repository. Please make sure that the file,corresponding to this package and module,exists and that dynamic loading of code modules,templates,and assets is supported in your execution environment. This error is unrecoverable.

我认为这意味着它正在库外查找但找不到文件

还有这个:

datasources:
  db_name:
    credentials: ${db_name}
    data_asset_type:
      class_name: OracleDataset
      module_name: dataset.oracle_dataset
    class_name: OracleDatasource
    module_name: datasource.oracle_datasource

No module named "datasource.oracle_datasource" Could be found in the repository. Please make sure that the file,and assets is supported in your execution environment. This error is unrecoverable.

我认为这意味着它在库外查找但找不到文件

解决方法

要扩展远大期望,请使用项目中的 /plugins 目录(此文件夹在您运行 great_expectations init 时自动创建)。此处添加的模块可在您的配置中引用。

将 oracle_datasource.py 和 oracle_dataset.py 添加到 plugins 文件夹:

.
├── custom_data_docs
│   ├── renderers
│   ├── styles
│   │   └── data_docs_custom_styles.css
│   └── views
├── oracle_dataset.py
└── oracle_datasource.py

在 great_expectations.yml 中编辑您的 yaml,如下所示(请注意,我们处理相对于该文件夹的模块名称,因此如果您的新模块位于 plugins 文件夹的根目录,则不需要点路径):

datasources:
  db_name:
    credentials: ${db_name}
    data_asset_type:
      class_name: OracleDataset
      module_name: oracle_dataset
    class_name: OracleDatasource
    module_name: oracle_datasource

最后一件事 - 如果您愿意将其贡献回主程序包,我相信远大期望社区会喜欢拥有 Oracle 数据源和数据集! https://docs.greatexpectations.io/en/latest/contributing.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。