python-3.x 如何导入一个模块,该模块是一个包的一部分,该包导入另一个模块,该模块与导入的模块位于同一目录中?

e5nszbig  于 2023-03-04  发布在  Python
关注(0)|答案(1)|浏览(185)

我的文件具有以下结构

main_dir/
├─main.py
└─utils/
  ├─func_a.py
  ├─func_b.py
  └─__init__.py

脚本main.py导入模块func_a.py,后者导入func_B.py:
main.py

from utils import func_a

func_a.hello_world_n_times(5)

函数_a.py

from func_b import hello_world

def hello_world_n_times(n):
    for i in range(n):
        hello_world()

if __name__ == '__main__':
    hello_world_n_times(5)

函数_B.py

def hello_world():
    print("Hello world!")

文件__init__.py为空。
当我运行www.example.com时main.py,我收到以下错误:

File "...\main_dir\utils\func_a.py", line 1, in <module>
    from func_b import hello_world
ModuleNotFoundError: No module named 'func_b'

解决此错误的最佳方法是什么?

5lhxktic

5lhxktic1#

在func_a.py中尝试:

from utils import func_b

def hello_world_n_times(n):
for i in range(n):
    func_b.hello_world()

if __name__ == '__main__':
    hello_world_n_times(5)

我相信这样可以解决您的问题。您需要从utils导入func_b,并在func_a文件中添加到**hello_world()**的文件路径

主页面:

import func_a
func_a.hello_world_n_times(5)

函数_a.py:

from utils import func_b

def hello_world_n_times(n):
    for i in range(n):
        func_b.hello_world()

if __name__ == '__main__':
    hello_world_n_times(5)

函数B.py:

def hello_world():
    print("Hello World!")

相关问题