Ошибка пакета верхнего уровня при относительном импортеPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка пакета верхнего уровня при относительном импорте

Сообщение Anonymous »

Кажется, здесь уже есть немало вопросов об относительном импорте в Python 3, но, прочитав многие из них, я так и не нашел ответа на свою проблему.
Так вот в чем вопрос.

У меня есть пакет, показанный ниже

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

package/
__init__.py
A/
__init__.py
foo.py
test_A/
__init__.py
test.py
и у меня есть одна строка в test.py:

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

from ..A import foo
теперь я нахожусь в папке пакета и запускаю

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

python -m test_A.test
Я получил сообщение

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

"ValueError: attempted relative import beyond top-level package"
но если я нахожусь в родительской папке пакета, например, я запускаю:

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

cd ..
python -m package.test_A.test
все в порядке.

Теперь мой вопрос:
когда я нахожусь в папке пакета и запускаю модуль внутри подпакет test_A как test_A.test, насколько я понимаю, ..A поднимается только на один уровень, который все еще находится в папке пакета, почему он выдает сообщение, говорящее за пределами пакет верхнего уровня. Какова именно причина появления этого сообщения об ошибке?

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

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

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

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

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

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

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