首页 > 解决方案 > 导入另一个文件的文件

问题描述

我想导入一个也导入另一个文件的文件。

我目前有以下目录结构:

.
├── main.py
└── foo
    ├── file1.py
    ├── file2.py
    └── file3.py

使用以下代码:

# main.py
from foo.file1 import func1

func1()


# foo/file1.py
from file2 import func2
from file3 import func3

def func1():
   # Do stuff
   func2()
   func3()

if __name__ == "__main__":
   # Do some other stuff
   func1()


# foo/file2.py
from file3 import func3

def func2():
   # Do stuff
   func3()


# foo/file3.py
def func3():
   # Do stuff

如果我跑main.py,我会得到ModuleNotFoundError: No module named 'file2'

我可以用替换该行from file2 import func2并对foo/file1.pyfile3from foo.file2 import func2导入执行相同的操作,但随后我无法自行运行foo/file1.py

解决此问题的推荐方法是什么?

标签: pythonpython-3.ximport

解决方案


Python3不支持Implicit Relative Importseg from file2 import func2,我们需要使用Explicit Relative Importseg from .file2 import func2


foo/file1.py变化中:

from file2 import func2
from file3 import func3

至:

from .file2 import func2
from .file3 import func3

foo/file2.py变化中:

from file3 import func3

至:

from .file3 import func3

您可能想阅读:Python 中的绝对与相对导入


推荐阅读