首页 > 解决方案 > Python导入一个模块,它本身导入另一个文件

问题描述

我有一个名为 x.py 的 python 文件,它导入另一个名为 y.py 的文件。y.py 本身导入 z.py,y.py 和 z.py 在同一个目录下,而 x.py 在父目录下。当我在 y.py 中使用相对导入时,例如import .zy 不起作用而 x 起作用。当我将导入更改为import zy.py 有效但 x.py 无效

dic1  
    |__x.py
    |__dic2
         |__y.py
         |__z.py

x imports y
y imports z

是否有任何解决方案可以导入在不同目录中导入另一个文件的 python 文件。

标签: pythonimport

解决方案


Python 中的包需要__init__.py在它们的根目录下有一个文件。在这里,我对什么是包以及什么是根目录感到有些困惑。

我会有这样的事情:

<root_directory>
  |__ setup.py
  |__ <other top level files>
  |__ dic1/
    |__ __init__.py
    |__ x.py
    |__ dic2/
      |__ y.py
      |__ z.py

您已将此标记为python,所以我不知道您使用的是 Python2 还是 Python3。鉴于前者是生命的尽头,你真的应该使用 Python3。

你可以导入相对于根的东西,在这个例子中,dic1.

如果使用 python2,则需要from __future__ import absolute_import在每个文件的顶部。

x.py

from dic1.dic2 import y

y.py

from dic1.dic2 import z

推荐阅读