«Попытка относительного импорта за пределы пакета верхнего уровня» даже для кода из официальных документов.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 «Попытка относительного импорта за пределы пакета верхнего уровня» даже для кода из официальных документов.

Сообщение Anonymous »

У меня есть (простой) случай необходимости совместного использования модулей utils с другими пакетами на одном уровне и ниже. Но я не могу - когда я делаю относительный импорт с двумя точками для импорта из другого пакета, например

Код: Выделить всё

from ..utils import foo
Я получаю сообщение об ошибке ImportError: попытка относительного импорта за пределы пакета верхнего уровня. Наконец, я решил прочитать документацию, где об этом сказано

Либо в 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
где все __init__.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
Запускал из PyCharm и из Anaconda Prompt с помощью Python Module_a.py из каталога проекта — результат тот же. Использовал Python 3.10.13 от Anaconda для Windows.
Может ли кто-нибудь помочь понять, что происходит не так? Я думал, что совместное использование функций из пакета верхнего уровня (например, некоторых утилит, расположенных в последующем пакете) является обычной практикой.

Подробнее здесь: https://stackoverflow.com/questions/790 ... from-offic
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»