Код: Выделить всё
from ..utils import foo
Либо в subpackage1/moduleX.py, либо в subpackage1/__init__.py, ниже приведены действительные относительные импорты
Я сделал этот простой проект:
Код: Выделить всё
package1/
__init__.py
module_x.py
module_y.py
package2/
__init__.py
module_z.py
__init__.py
module_a.py
Код: Выделить всё
# package1/__init__.py
from .module_y import spam
from .module_y import spam as ham
from . import module_y
from ..package1 import module_y
from ..package2.module_z import eggs
from ..module_a import foo
Код: Выделить всё
# module_a.py
import package1
def foo():
pass
И когда я запустите модуль_a.py У меня возникла ошибка
Код: Выделить всё
C:\Anaconda\python.exe ...\py_import\module_a.py
Traceback (most recent call last):
File "...\py_import\module_a.py", line 1, in
import package1
File "...\py_import\package1\__init__.py", line 4, in
from ..package1 import module_y
ImportError: attempted relative import beyond top-level package
Может ли кто-нибудь помочь понять, что происходит не так? Я думал, что совместное использование функций из пакета верхнего уровня (например, некоторых утилит, расположенных в последующем пакете) является обычной практикой.
Подробнее здесь: https://stackoverflow.com/questions/790 ... from-offic