【问题标题】:How to import a module in another module from the same subpackage?如何从同一个子包中导入另一个模块中的模块?
【发布时间】:2021-03-30 17:12:55
【问题描述】:

我的包树如下:-

My_package
    |
    +--__init__.py    (empty)
    +--mainfile.py
    +--main_modules
        |
        +--__init__.py    (empty)
        +--module1.py
        +--module2.py

module2的内容:-

class Wish:
    def greatings(self):
        print("Hello World!")

wish = Wish()

当我尝试从 module1 中的 module2 导入希望时:- module1的内容:-

from module2 import wish

没有错误。

但是当我在 mainfile.py 中导入两个模块时, mainfile.py 的内容:-

from main_modules import module1
from main_modules import module2

发生错误:-

Traceback (most recent call last):
  File "c:\Users\amuly\AppData\Local\Programs\Python\PyProgs\Test package\main package\mainfile.py", line 1, in <module>
    from main_modules import module1
  File "c:\Users\amuly\AppData\Local\Programs\Python\PyProgs\Test package\main package\main_modules\module1.py", line 1, in <module>       
    from module2 import wish
ModuleNotFoundError: No module named 'module2'

这是问题的屏幕截图:- Screen Shot

我已经搜索了各种相关的问题,并尽我所能,但它没有工作

【问题讨论】:

    标签: python python-3.x module package


    【解决方案1】:

    由于module1module2 处于同一包级别,您只需在module1.py 中执行此操作:

    from module2 import wish

    要从mainfile.py 导入module2.wish,您可以这样做:

    from main_modules.module2 import wish

    编辑 - 在module1.py 中,将导入语句更改为:

    from main_modules.m2 import wish

    使用main_modules.m2 会有所帮助,因为函数调用是从mainfile.py 发生的。因此,随后调用的文件中的导入语句将查看相对于mainfile.py 的导入。我希望这是有道理的。

    【讨论】:

    • 由于某种原因它不起作用。我已经试过了!
    • @A.Paritosh - 试试this
    • 这可行,但出现了一个新问题。我已经编辑了我的问题。
    • @A.Paritosh ,检查我的答案的编辑。
    【解决方案2】:

    您必须删除from .module2 import wish 中的.,因为它们处于同一包级别(正如@Sindhu Satish 已经指出的那样)。

    在您的 module1.py 文件中,您必须将导入语句更改为:from module2 import wish 才能正常工作。

    希望能帮到你!

    【讨论】:

    • 我已经添加了我的问题的 ss。由于某种原因,它不起作用。我一定是做错了什么,但我不能指手画脚。
    • 出现了新问题。当两个模块都在mainfile中导入时,module2不能在module1中导入
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 2020-05-18
    • 2020-06-22
    • 2022-12-10
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多