Python:从父目录导入全局变量

3
applications/
    app.py
    extensions.py
    controllers/
        __init__.py
        inner.py

app.py

import inner
from extensions import aaa
inner.test()

extensions.py

import os
aaa = os.system

__init__.py

from inner import *

inner.py

from extensions import aaa
def test():
    aaa('pwd')

我的项目结构和代码如上所述,程序将从app.py开始运行。
这为什么能够工作?aaa在inner.py中是如何导入的?
为什么我们可以直接从位于父目录中的extensions.py进行导入?

2个回答

0

你不是从“父目录”导入,而是从applications/导入。这个applications/恰好是父目录只是一个巧合。


很抱歉,但我还是不太明白。为什么我可以直接从applications/导入? - Shang Jiang
因为它在sys.path中,就像任何可以从中导入的目录一样。 - Ignacio Vazquez-Abrams
内部.py中的import语句是否使用与app.py中的import语句相同的sys.path? - Shang Jiang
Python程序中的所有导入语句都使用相同的sys,path,除非明确修改。 - Ignacio Vazquez-Abrams

0
这取决于你要导入到哪个.py文件以及从哪个目录子文件夹进行导入。在Python中导入时,该.py文件必须位于相同的文件夹或子文件夹目录中。尝试将extensions.py文件的目录更改为你想要从中导入全局变量的.py文件。我的答案几乎与之前回答的人一样。另外,你的问题不够清楚。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接