python eclipse flask pydev flask-extensions

python - ¿Cómo hacer eclipse/pydev feliz de ver extensiones de matraces en Windows?



flask flask-extensions (4)

Me encontré con este artículo y seguí todos los pasos. Pero pyDev no verá mis extensiones de matraz y eso es realmente molesto. Solo hay una cosa (y creo que esta es la clave):

Touch /site-packages/flaskext/__init__.py

Touch es una utilidad de Unix, creo. ¿Hay un equivalente a esto en Windows?


touch creará un archivo en blanco si no existe, o actualizará la hora de modificación del archivo si existe.

Para este propósito, echo > /site-packages/flashext/__init__.py en una línea de comandos debería ser suficiente. (El archivo no estará en blanco, pero solo contiene una nueva línea que es semánticamente equivalente para Python).


También estoy luchando con esto y el problema parece estar en la forma en que Flask importa las extensiones. Si abre el archivo flask/ext/__init__.py , verá que usa el importador. No creo que a PyDev le guste tanto, así que he editado este archivo con las importaciones fijas:

import flask_login as login import flask_sqlalchemy as sqlalchemy import flask_wtf as wtf def setup(): from ..exthook import ExtensionImporter importer = ExtensionImporter([''flask_%s'', ''flaskext.%s''], __name__) importer.install() setup() del setup

También descubrí que las importaciones de Flask-SQLAlchemy también se rompieron, así que en lugar de hacer db.Column como se explica en la documentación, use directamente la importación sqlalchemy, es decir, from sqlalchemy import Column, ForeignKey


El Eclipse usa análisis estático de módulos por defecto. flask.ext lista de importación de forma dinámica. Para forzar el análisis dinámico utilizando el shell de Python, agregue el flask.ext a la lista de edificaciones forzadas.

Vaya a Preferences -> PyDev -> Interpreters -> Python Interpreter . Seleccione su intérprete, vaya a la pestaña Forced Builtins . Haga clic en New... e ingrese flask.ext .

Esto requiere que PyDev analice a la fuerza el módulo a través de un shell.

Para más detalles ver el manual de PyDev .


Si tiene su proyecto en un entorno virtual y desea agregar el proyecto en eclipse para que el proyecto use bibliotecas que están instaladas en el entorno virtual, entonces debe seguir los siguientes pasos.

Paso 1: digamos que la ruta absoluta a su entorno virtual es: C:/Users/sadegh/Desktop/flask_eclipse/fe/venv

ir a la window->preferences->PyDev->interpretors->Python Interpretor en el directorio de Scripts , hay python.exe que es el intérprete de Python que se ha asignado a este entorno virtual. Este ejecutable será el nuevo intérprete de Python que agregaremos a eclipse.

paso2: Ve a la window->preferences->PyDev->Interpreters->Python Interpreter

En el panel derecho, verá esto:

haga clic en el botón nuevo, luego aparecerá esta ventana:

escriba todo lo que desee en el campo Interpreter Name del Interpreter Name y escriba la ruta absoluta del archivo python.exe que se mencionó en el paso 1 en el campo Interpreter Executable

después de hacer clic en OK , aparecerá:

seleccione todos los elementos y luego haga OK en OK

paso3: selecciona el intérprete recién agregado en el panel de arriba, luego en el panel de abajo ve a la pestaña Forced Builtin clic en el nuevo botón en el lado derecho de este panel debajo.

y en la ventana que aparece escribe flask.ext .

paso 4: todo está configurado ahora:

si desea iniciar un nuevo proyecto: cuando esté creando un nuevo PyDev Project seleccione el nuevo Intérprete que creamos como Intérprete de este proyecto.

si desea convertir un proyecto existente en un proyecto de matraz en su entorno virtual, haga clic derecho en el proyecto y vaya a propiedades y en PyDev-Interpreter/Grammar cambie el intérprete al nuevo intérprete que hemos creado.

Nota: Si desea que el eclipse ejecute el servidor para usted en el entorno virtual, puede ejecutar el servidor desde el código que contiene la instancia de Flask () como esta:

if __name__ == ''__main__'': #here i assume you have put this code in a file that app.run() #contains variable "app", which contains the instance of #Flask(__main__)