python - 如何导入 Great Expectations 自定义数据源 ValueError: no package specified for (required for relative module names)
问题描述
我的 Great Expectations 项目有这个文件夹结构:
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.
我认为这意味着它正在图书馆之外寻找但找不到文件。
解决方案
要扩展 Great Expectations,请使用/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 数据源和数据集贡献回主程序包,我相信 Great Expectations 社区会很乐意拥有它!https://docs.greatexpectations.io/en/latest/contributing.html
推荐阅读
- python - 在 cython 中多次循环一个 scipy 函数 - 没有看到太大的改进 - 我应该吗?
- sql - 表中最后更新的项目
- flutter - 无法访问嵌套数组对象颤动
- docker - Docker 连接错误 [Errno99] 中的 Pymodbus
- r - R:dplyr 不能过滤()某些字符
- css - 未应用 Mapbox 标记样式
- ios - 如何将值从 Swift 代码发送到 C Wrapper
- c - 为地址清理程序抑制 gtest 的 unitest
- javascript - 地理位置不断请求许可
- android - 离子电容器构建找不到符号 android.support.v4.app.ActivityCompat