我正在尝试清理我的代码并将 models.py 文件移到顶层,因为除了浮士德之外的其他模块现在将使用它。文件夹结构如下(尽管为简单起见被删减)
App
|
├── models
| ├── models.py
|
├── kafka
| ├── agent_a.py
|
├── servers
| ├── fastapi_server.py
和fastapi_server.py
需要agent_a.py
访问models.py
。如果我从App
目录运行服务器,它可以正常工作。但是,当我尝试运行以下命令以从 App 目录启动 faust 代理时,它会返回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
它根本不抱怨该模块。如果我尝试使用以下命令运行 faust 应用程序:
C:\path\to\App> python kafka\agent_a.py worker
然后它抱怨模型不是模块。所以我对为什么一个python脚本运行正常而另一个没有运行完全感到困惑......但它确实在不同的目录中正常运行
我总是发现 python 中的导入很荒谬,让我无法理解,但这个更令人震惊。