浮士德不喜欢相对路径

Faust doesn't like relative path

我正在尝试清理我的代码并将 models.py 文件移动到顶层,因为除 faust 模块之外的其他模块现在将使用它。 文件夹结构如下(尽管为简单起见被删减)

App
|
├── models
|   ├── models.py
|
├── kafka
|   ├── agent_a.py
|
├── servers
|   ├── fastapi_server.py

fastapi_server.pyagent_a.py 都需要访问 models.py。如果我 运行 来自 App 目录的服务器它工作正常。但是,当我尝试 运行 以下命令也从 App 目录启动浮士德代理时,它 returns 一个 No module named 'kafka.agent_a' 错误:

C:\path\to\App> faust -A kafka.agent_a:app worker

奇怪的是,当我从一个完全不同的目录中 运行 执行相同的命令时,其中只有 faust/kafka 内容,它可以正常工作。它报告错误可能发生了什么?

但还要注意,当我 运行 服务器使用时:

C:\path\to\App> uvicorn servers.fastapi_server:app

它根本不抱怨这个模块。如果我尝试 运行 浮士德应用程序使用:

C:\path\to\App> python kafka\agent_a.py worker

然后它抱怨模型不是模块。所以我完全不明白为什么一个 python 脚本 运行 可以,而另一个却不行......但它 运行 通常在不同的目录

我一直觉得 python 中的进口商品让我无法理解,但这个明显更令人震惊。

按照上面的建议重命名目录确实解决了问题,但我们仍然有一个相对导入问题,这是一个 python 问题,而不是 Faust 问题。但是导入问题完全可以通过使用终端命令来解决,所以我们将坚持下去。