2016-05-03 2 views
1
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, который находится в родительском каталоге?

ответ

0

Вы не импортируете из «родительского каталога», который вы импортируете из applications/. То, что applications/ оказывается родительским каталогом, является совпадением.

+0

Извините, но я все еще не совсем понимаю. Почему я могу напрямую импортировать из 'applications /' –

+0

Потому что он находится в 'sys.path', как и любой каталог, из которого можно импортировать. –

+0

Выполняет ли оператор import в файле inner.py тот же sys.path, что и оператор импорта в app.py? –

0

Это зависит от того, с какой .py вы импортируете и в какую папку каталога вы импортируете. При импорте в python этот .py-файл попадает в одну папку или каталог подпапки. Попробуйте изменить каталог файла extensions.py на .py-файл, с которого вы хотите импортировать глобальную переменную. Мой ответ почти такой же, как тот, который отвечал передо мной. также ваши вопросы не ясны.

Смежные вопросы