#python #module #import
#python #модуль #импорт
Вопрос:
У меня есть папка с такой структурой:
parent/
---__init__.py
---SomeClass.py
---Worker.py
Первый файл ( __init__.py
) пуст.
Содержимое второго файла ( SomeClass.py
) представляет собой следующий код:
class Test:
pass
Третий файл ( Worker.py
):
import SomeClass
Test()
Ошибка импорта: нет модуля с именем SomeClass
Что я делаю не так?
Комментарии:
1. Для меня это не удается по-другому — не удается разрешить символ Test (). И это нормально — вам нужно либо использовать полное имя ‘SomeClass. Test()’, или импортируйте его в пространство имен модуля: ‘from SomeClass import Test’ и оставьте вторую строку как есть. Однако это не отвечает на ваш первоначальный вопрос. Как вы создаете этот код?
2. Откуда вы запускаете программу и как (например
import parent.Worker
)?3. @sam-magura выполняется из того же каталога.
4. вы имеете в виду python Worker.py изнутри «родительского»? Или импортировать его из каталога на один уровень выше, как предложил Сэм Магура? Дайте нам больше деталей 🙂
5. @CodePainters, я думаю, это связано с версией python
Ответ №1:
Попробуйте
from . import SomeClass
но помните, что вам придется
SomeClass.Text()
вместо того, чтобы просто Test()
Комментарии:
1. Ну, я напортачил, вы тоже можете использовать это в 2.x.
2. относительный импорт — Python 2.6 и более поздние версии
3. Ах, да, я проверил только 2.7. Использование 3.x действительно затрудняет решение проблем с 2.x. Ну, это была моя причина выбрать 3 =)