如何导入Great Expections自定义数据源ValueError:未为指定包(相对模块名称需要)

2024-09-30 16:25:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我的《远大前程》项目有以下文件夹结构:

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, 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.

我想这意味着它正在图书馆外寻找,但找不到文件


Tags: andthenamepydbinitdatasetclass
1条回答
网友
1楼 · 发布于 2024-09-30 16:25:25

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

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

.
├── 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

相关问题 更多 >