Подтвердить что ты не робот

Решение PyCharm - flask.ext.sqlalchemy vs flask_sqlalchemy

Если я использую следующий формат в своем приложении, все работает, кроме функции разрешения/автозаполнения PyCharms:

from flask.ext.sqlalchemy import SQLAlchemy

Если в моем приложении используется следующий формат, все работает. Но, увы, это не правильный способ импорта библиотек:

from flask_sqlalchemy import SQLAlchemy

Есть ли способ заставить PyCharm правильно разрешить первый синтаксис?

4b9b3361

Ответ 1

Пространство имен flask.ext является пространством имен транзисторов, см. раздел Переход к расширению импорта в документах разработки расширений флагов:

Некоторое время мы рекомендовали использовать пакеты пространств имен для расширений Flask. Это оказалось проблематичным на практике, потому что существует множество различных конкурирующих систем пространства имен, и pip будет автоматически переключаться между различными системами, и это вызвало множество проблем для пользователей.

и

Расширения флэков должны побуждать пользователей импортировать из flask.ext.foo вместо flask_foo или flaskext_foo , чтобы расширения могли перейти к новому имени пакета, не затрагивая пользователей.

Итак, для перехода между версиями был добавлен псевдоним flask.ext, который будет автоматически пытаться импортировать пакеты flask_[name] при импорте flask.ext.[name]. Но этот переход теперь спорный; вы больше не найдете пакеты, которые по-прежнему полагаются только на flask.ext.

Таким образом, совершенно правильно использовать фактическое имя модуля, и PyCharm автозаполняет содержимое модуля.

Вам действительно нужно использовать flask.ext, если вы все еще используете более старую версию расширения и должны быть совместимы в будущем. Это будущее уже здесь.

Ответ 2

FYI. flask.ext устарел, и правильный путь:

from flask_sqlalchemy import SQLAlchemy

В случае, если кто-либо нашел этот вопрос SO в Google.

Ответ 3

Используйте virtualenv и установите этот virtualenv для своего проекта в PyCharm. У меня была такая же проблема, как и у вас, и после установки правильного virtualenv (который содержит флягу и расширение flask_sqlalchemy) моя проблема решена.

Чтобы установить виртуальный файл для вашего проекта в PyCharm (из веб-справки JetBrains):

Чтобы добавить существующую виртуальную среду в список доступных переводчики     На странице Project Interpreter параметров проекта нажмите .     В раскрывающемся списке выберите "Добавить локальный".

enter image description here

В диалоговом окне "Выбор интерпретатора Python", которое открывается, выберите нужный исполняемый файл Python и нажмите "ОК".

Кроме того, попробуйте добавить require.txt в корень вашего проекта, после чего PyCharm уведомит вас об установке отсутствующих зависимостей, которые могут вам помочь.