【问题标题】:Erro when I to try to use import当我尝试使用导入时出错
【发布时间】:2021-09-06 05:55:30
【问题描述】:

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

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

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

我该如何解决这个问题?

【问题讨论】:

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


    【解决方案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()
    

    【讨论】:

    • 非常感谢@Gilbert Tanner!你帮了我很多!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    • 2018-09-22
    • 2020-04-08
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 2018-04-14
    相关资源
    最近更新 更多