kedro 运行 作为 python 命令而不是命令行

kedro run as a python command instead of command line

我开始使用 Kedro,所以我为默认 iris 数据集创建了新的 kedro 项目。

我能够使用 kedro run 命令成功 运行 它。我现在的问题是如何 运行 它作为 python 命令?从文档中我读到命令 kedro run 运行 是 src/project-name/run.py。但是,如果我 运行 run.py 我得到 ModuleNotFoundError: No module named 'iris_workflow'。如果我 运行 来自 src/project-name/cli.pyrun 方法,我会得到同样的错误。

如果我在终端中 运行 kedro run,一切正常。

如何在没有 subprocess.run() 的 python 脚本中 运行 kedro run。如果我在脚本中导入 run.pycli.py 并 运行 它,我会得到同样的错误 ModuleNotFoundError: No module named 'iris_workflow'.

这是我使用 kedro new --starter=pandas-iris

创建的默认工作流程

问题是你的 src/ 文件夹是你的项目 python 包所在的文件夹不在你的 Python 路径上,所以如果你修改你的 PYTHONPATH首先,您将能够 运行 run.py:

~/code/kedro/test-project
test-project ❯ PYTHONPATH=$PYTHONPATH:$pwd/src python3 src/test_project/run.py

为了更具体地回答您的问题,如果您想从 Python 脚本中 运行 Kedro,您可以这样做:

import sys

sys.path.append("<path-to-your-project-src")
with KedroSession.create(package_path.name) as session:
    session.run()