Импорт модулей Python

#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 =)