python - awesome - Resolución PyCharm-flask.ext.sqlalchemy vs flask_sqlalchemy
awesome python (3)
El espacio de nombres de flask.ext
es un espacio de nombres de flask.pocoo.org/docs/0.10/extensiondev/#ext-import-transition , consulte la flask.pocoo.org/docs/0.10/extensiondev/#ext-import-transition de extensión de los documentos de Desarrollo de extensión de Flask :
Por un tiempo recomendamos utilizar paquetes de espacio de nombres para extensiones de Flask. Esto resultó ser problemático en la práctica debido a que existen muchos sistemas de paquetes de espacios de nombres competitivos diferentes y pip cambiará automáticamente entre diferentes sistemas y esto causó muchos problemas para los usuarios.
y
Las extensiones de matraz deberían instar a los usuarios a importar desde
flask.ext.foo
lugar deflask_foo
oflaskext_foo
para que las extensiones puedan pasar al nuevo nombre del paquete sin afectar a los usuarios.
Por lo tanto, para la transición entre versiones, se flask.ext
alias de flask.ext
, que automáticamente intentará importar los flask_[name]
al importar el flask.ext.[name]
. Pero esa transición ahora es discutible; ya no encontrará paquetes que todavía dependan únicamente del flask.ext
.
Como tal, está perfectamente bien usar el nombre real del módulo y hacer que PyCharm autocomplete el contenido del módulo.
En realidad, solo tiene que usar flask.ext
si todavía está usando una versión anterior de la extensión y necesita ser compatible en el futuro. Ese futuro ya está aquí.
Si utilizo el siguiente formato en mi aplicación, todo funciona, excepto la función de resolución / autocompletado de PyCharms:
from flask.ext.sqlalchemy import SQLAlchemy
Si utilizo el siguiente formato en mi aplicación, todo funciona. Pero, por desgracia, no es la forma correcta de importar las bibliotecas:
from flask_sqlalchemy import SQLAlchemy
¿Hay alguna manera de hacer que PyCharm resuelva la primera sintaxis correctamente?
FYI. flask.ext
está en desuso, y la forma correcta es:
from flask_sqlalchemy import SQLAlchemy
En caso de que alguien encuentre esta pregunta SO en Google.
Use un virtualenv y configure ese virtualenv para su proyecto en PyCharm. Tuve el mismo problema que tú y después de configurar el virtualenv correcto (que contiene el matraz y la extensión flask_sqlalchemy) mi problema está resuelto.
Para establecer un virtualenv para su proyecto en PyCharm ( desde la Ayuda Web de JetBrains ):
Para agregar un entorno virtual existente a la lista de intérpretes disponibles En la página Intérprete de proyectos de la configuración del proyecto, haga clic en . En la lista desplegable, elija Agregar local.
En el cuadro de diálogo Seleccionar intérprete de Python que se abre, elija el ejecutable deseado de Python y haga clic en Aceptar.
Además, intente agregar requirements.txt a la raíz de su proyecto, luego PyCharm le notificará que instale dependencias faltantes que podrían ayudar.