我正在编写一个应用程序,该应用程序具有与 rabbitmq(发布者和消费者)集成的 2 个服务。 我有一个包含类 manager_mq 的文件夹 lib,用于管理我的应用程序的发布/订阅过程。
我的目录结构就像图片一样:
在我的使用者或发布者 .py 文件中,当我尝试导入 manager_mq 时返回错误。
我的导入是这样的:
from services.lib.manager_mq import Manager
但是,控制台返回错误。
Traceback (most recent call last):
File "consumer.py", line 5, in <module>
from services.lib.manager_mq import Manager
ModuleNotFoundError: No module named 'services'
我尝试使用相对导入,但仍然发生错误。
Traceback (most recent call last):
File "consumer.py", line 5, in <module>
from ..lib.manager_mq import Manager
ImportError: attempted relative import with no known parent package
我该如何解决这个问题?
答案 0 :(得分:1)
这里绝对和相对导入都不起作用。如需更多信息,请查看Importing from Parent Directory。
在这种情况下,使用 sys.path
将 lib
添加到路径可能是最简单的。
application
├── consumer
│ └── __init__.py
│ └── consumer.py
└── lib
└── __init__.py
└── manager_mq.py
manager_mq.py
测试代码:
class Manager:
def __init__(self) -> None:
print('test')
consumer.py
测试代码:
import sys
sys.path.append("../lib")
from manager_mq import Manager
m = Manager()