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.py
的 run
方法,我会得到同样的错误。
如果我在终端中 运行 kedro run
,一切正常。
如何在没有 subprocess.run()
的 python 脚本中 运行 kedro run
。如果我在脚本中导入 run.py
或 cli.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()
我开始使用 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.py
的 run
方法,我会得到同样的错误。
如果我在终端中 运行 kedro run
,一切正常。
如何在没有 subprocess.run()
的 python 脚本中 运行 kedro run
。如果我在脚本中导入 run.py
或 cli.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()