PyCharm неразрешимая ссылка при импорте класса из другого файла

Эта проблема сводила меня с ума. Я пытаюсь импортировать класс из файла в том же каталоге. PyCharm дает мне ошибку "Unresolved reference". MyClass определяется в file.py.

Unresolved reference

Я нашел следующие вопросы:

У меня есть следующая структура проекта:

Project structure

Я записал src как источник root...

Я установил "Добавить корни источника в PYTHONPATH":

Add sources option

Я попробовал File → Invalidate Caches/Restart.. (Я даже перезапустил компьютер).

Если я попытаюсь запустить его, я получаю следующую ошибку в консоли: ImportError: cannot import name 'MyClass'

Интерпретатор является виртуальным на Python 3.4 на Ubuntu x64 14.04.

Если я устанавливаю и импортирую любые сторонние пакеты, они работают нормально.

Если я пытаюсь использовать echo $PYTHONPATH в терминале, он ничего не возвращает (то же самое с env | grep PYTHONPATH. У меня есть соответствующий virtualenv active, когда я пытаюсь это сделать.

Любые подсказки?

Ответ 1

Если MyClass определено в pack/file.py, вам необходимо импортировать его как:

from pack.file import MyClass

Обратите внимание, что использование имен встроенных типов Python (например, file) для ваших собственных модулей - плохая идея.

Ответ 2

Если вы используете python версии 3, попробуйте это из .pack import myclass, работал у меня

Ответ 3

Да, если вы используете python 3, вы должны добавить что-то вроде этого:

from .pack import MyClass

Он будет работать

Ответ 4

Следующие шаги решили мои проблемы:

  • Для всех каталогов требуется как минимум пустой файл __init__.py
  • Отметить все каталоги как исходные корни (согласно предыдущим инструкциям автора)