PyCharm неразрешенная ссылка на импорт? - PullRequest
0 голосов
/ 19 ноября 2018

Почему PyCharm подчеркивает этот импорт:

from oauth2_helper import (_url, get_token, get_session)
from config import scope

как Unresolved reference, но если я добавляю точки впереди:

from .oauth2_helper import (_url, get_token, get_session)
from .config import scope

Я не получаю подчеркивание ошибки в PyCharm, но при запуске приложения из терминала я получаю эту ошибку:

ModuleNotFoundError: No module named '__main__.oauth2_helper'; '__main__' is not a package

Как вы думаете, почему это происходит?

1 Ответ

0 голосов
/ 11 февраля 2019

Здесь есть две вещи:

Как говорит Эскапп в комментарии, PyCharm настроен на другой корень проекта, чем вы, вероятно, ожидаете, о чем свидетельствует пометка вашего импорта как неразрешенных ссылок.Вы не предоставили никаких намеков на структуру вашего проекта, но вполне вероятно, что ваш корень проекта установлен в родительский каталог вашего модуля Python (или даже дальше по иерархии).PyCharm ищет $ {PROJECTROOT} / oath2_helper и не находит его, потому что Project Root настроен на неправильный каталог.

Затем вы пытаетесь исправить эту проблему, переключившись на относительный импорт, который выглядит каклогичное решение.Похоже, вы напрямую вызываете модуль, в котором записаны эти импорты (т.е. python myapp.py).Когда вы вызываете модуль таким способом, он отбрасывает информацию о структуре пакета и больше не имеет никакой информации о том, где относительно расположены другие модули.Смотри https://stackoverflow.com/a/73149/11034626

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...