【问题标题】:Prefect ModuleNotFoundError when running from UI从 UI 运行时完美 ModuleNotFoundError
【发布时间】:2020-09-16 02:28:20
【问题描述】:

我正在学习 Prefect 教程,网址为:https://docs.prefect.io/core/tutorial/01-etl-before-prefect.html。 代码可以从git下载:https://github.com/PrefectHQ/prefect/tree/master/examples/tutorial

教程依赖于飞机库,它是教程下的目录。我可以通过终端执行流程:

python 02_etl_...

它完美执行!

我创建了一个项目,并将流程添加到该项目。通过 Prefect Server UI 我可以运行 Flow,但它失败并显示错误消息:

状态消息: Flow的环境加载和执行失败:ModuleNotFoundError("No module named 'aircraftlib'")

通过 Prefect Server UI 执行 Flows 时,我应该如何处理依赖关系?

【问题讨论】:

    标签: python prefect


    【解决方案1】:

    这部分取决于您使用的流存储和代理的类型。由于您使用 Prefect Server 运行,我假设您使用的是本地存储 + 本地代理;在这种情况下,您需要确保 aircraftlib 目录位于本地可导入 Python PATH 上。有几种方法可以做到这一点:

    • tutorial 目录中运行您的Prefect Agent;然后,您的本地代理的路径将被它提交的流程继承
    • 手动将tutorial/目录添加到你的全局python路径(我不推荐这个)
    • 使用-p CLI 标志将tutorial/ 目录添加到代理路径;例如:prefect agent start -p ~/Developer/prefect/examples/tutorial(这是我推荐的方法)

    【讨论】:

      最近更新 更多