繁体   English   中英

Python 导入一个模块,它本身导入另一个文件

[英]Python Import a module which it itself import another file

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

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

x imports y
y imports z

有什么解决方案可以导入一个python文件,该文件在不同的目录中导入另一个文件。

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

感谢 Blueteeth 和 Sofian 的回复。 为我不完整的问题道歉,我想我无法说出确切的点。

最后,我用
在 y.py 中import sys sys.path.insert(0, "dic2")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM