Рассмотрим эту простую структуру папок:
root
Package1
x.py
y.py
Package2
z.py
Examples
main.py
Теперь наши требования:
- x.py нужно импортировать y.py
- z.py нужно импортировать y.py
- main.py необходимо импортировать y.py и z.py
Вот что работает:
x.py
import y
def x():
y()
y.py
def y():
pass
z.py
import package1.y as y
def z():
y.y()
main.py
import sys
from os import path
sys.path.append( path.dirname( path.dirname( path.abspath(__file__) ) ) )
import package1.y as y
import package2.z as z
y.y()
z.z()
Вопросы:
- Это лучший и рекомендуемый способ настройки импорта в Python 3?
- Мне действительно не нравится изменять
sys.path
в main
, потому что он сильно связывает предположения о расположении пакетов внутри файла кода. Есть ли способ обойти это?
- Мне также действительно не нравятся лишние
as y
партии в import package1.y as y
. Есть ли способ обойти это?