当我尝试使用导入时出错

时间:2021-06-22 15:56:09

标签: python-3.x import importerror relative-import

我正在编写一个应用程序,该应用程序具有与 rabbitmq(发布者和消费者)集成的 2 个服务。 我有一个包含类 manager_mq 的文件夹 lib,用于管理我的应用程序的发布/订阅过程。

我的目录结构就像图片一样:

enter image description here

在我的使用者或发布者 .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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

这里绝对和相对导入都不起作用。如需更多信息,请查看Importing from Parent Directory

在这种情况下,使用 sys.pathlib 添加到路径可能是最简单的。

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()