library awesome python python-2.7 flask pycharm flask-sqlalchemy

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 de flask_foo o flaskext_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.