从UI运行时发生预取ModuleNotFoundError



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

教程依赖于aircraftlib,后者是教程下的一个目录。我可以通过终端执行流:

python 02_etl_...

它执行得非常完美!

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

状态消息:未能加载和执行Flow的环境:ModuleNotFoundError("没有名为"aircraftlib"的模块"(

通过预取服务器UI执行流时,应如何处理依赖关系?

这在一定程度上取决于您使用的流存储和代理的类型。由于您使用的是预取服务器,我认为您使用的就是本地存储+本地代理;在这种情况下,您需要确保aircraftlib目录位于本地可导入的Python PATH上。有几种方法可以做到这一点:

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

最新更新