从用户界面运行时,Prefect ModuleNotFoundError

问题描述

我正在访问https://docs.prefect.io/core/tutorial/01-etl-before-prefect.html上的Prefect教程。 可以从git下载代码https://github.com/PrefectHQ/prefect/tree/master/examples/tutorial

这些教程都依赖于aircraftlib,这是教程下的目录。我可以使用以下命令通过终端执行流程:

python 02_etl_...

它执行得很好!

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

状态消息: 无法加载和执行Flow的环境:ModuleNotFoundError(“没有名为'aircraftlib'的模块”

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

解决方法

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

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