我有一个名为x.py的python文件,该文件导入了另一个名为y.py的文件。 y.py本身导入的z.py,y.py和z.py在同一目录中,而x.py在父目录中。
当我在y.py中使用相对导入时import .z
y不起作用,x起作用。当我将导入更改为import z
时,y.py有效,但x.py不起作用
dic1
|__x.py
|__dic2
|__y.py
|__z.py
x imports y
y imports z
有什么解决方案可以导入python文件,该文件可以在不同目录中导入另一个文件。
答案 0 :(得分:1)
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
答案 1 :(得分:0)
感谢Blueteeth和Sofian的回复。对于我未完结的问题表示歉意,我想我无法说出确切的意思。
最后我用了
import sys
sys.path.insert(0, "dic2")
在y.py