Решение PyCharm - flask.ext.sqlalchemy vs flask_sqlalchemy
Если я использую следующий формат в своем приложении, все работает, кроме функции разрешения/автозаполнения PyCharms:
from flask.ext.sqlalchemy import SQLAlchemy
Если в моем приложении используется следующий формат, все работает. Но, увы, это не правильный способ импорта библиотек:
from flask_sqlalchemy import SQLAlchemy
Есть ли способ заставить PyCharm правильно разрешить первый синтаксис?
Ответы
Ответ 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 уведомит вас об установке отсутствующих зависимостей, которые могут вам помочь.