El mejor marco para aplicaciones web que emplean código Python

Estoy desarrollando algunos algoritmos en Python para analizar datos científicos. Dado que habrá una mejora constante en los algoritmos, me gustaría presentarlos a los científicos en el equipo de proyecto de una empresa a través de una aplicación web. Tengo algo de experiencia en Python, pero muy poca en tecnologías web. Espero sugerencias sobre el mejor enfoque, marco web, CMS, etc. Estos son algunos requisitos.

  • Ejecutar dentro de una intranet de la empresa
  • Capaz de cargar archivos de datos a través de un cuadro de diálogo de archivo
  • Capaz de almacenar archivos en una base de datos con metadatos buscables
  • Capaz de ejecutar algoritmos escritos en Python
  • Capaz de mostrar los resultados en gráficos y tablas
  • Capaz de exportar archivos de datos de resultados a las computadoras de los usuarios
  • Documentación suficiente y recursos de aprendizaje para permitir que un desarrollador no web implemente

Respuestas (3)

Le sugiero que eche un vistazo a Jupyter Notebooks. Incluso puede probarlos en su navegador en https://try.jupyter.org .

  • El servidor Jupyter se puede ejecutar en su máquina local o en cualquier lugar de su red.
  • JupyterHub puede crear un concentrador multiusuario que genere, administre y proxies varias instancias del servidor de portátiles Jupyter de un solo usuario.
  • Incluso puede descargar una imagen de Docker de un JupyterHub base como punto de partida desde aquí .
  • Amplias bibliotecas científicas que incluyen visualización.
  • Puede crear nuevos cuadernos o cargar cuadernos locales al servidor
  • Puede descargar cuadernos existentes para uso local/sin conexión
  • Cada cuaderno puede incrustar documentación en Markdown y Mathjax , código en cualquiera de los núcleos compatibles que haya instalado y los resultados de la ejecución del código.
  • Los núcleos compatibles incluyen iPython y una extensa lista de otros lenguajes, incluidos R, Julia, Haskell, Ruby, JavaScript, C Sharpe, Forth, SCALA, etc.
  • Los resultados de una ejecución determinada se pueden descargar como archivos html o pdf.
  • Amplia capacidad de trazado
  • Gratis, gratis y de código abierto
  • Amplia guía de instalación y configuración
Para ver un ejemplo funcional de una aplicación web que se ejecuta en Jupyter Notebook, incluido un gráfico configurable y su código de Python, consulte esta pregunta: Aplicación web para mostrar gráficos en python . Se proporciona un enlace para descargar el código fuente y los datos de entrada en un comentario debajo de la respuesta aceptada.
He usado Jupyter Notebook localmente en mi computadora y me gusta. Sin embargo, no estoy seguro de que oculte la complejidad del código de los químicos que lo utilizarían. Además, no sé cómo manejaría la base de datos de los archivos de datos.
@EricShain: si el código que desea ocultar se encapsula como archivos o módulos de python y se importa, entonces el código visible es mínimo, posiblemente solo un import module;module.run()método. IIRC también existe la posibilidad de ocultar/colapsar celdas en curso. Los archivos de datos preestablecidos se pueden cargar desde el sistema de archivos del servidor, los archivos de usuario se pueden cargar desde su máquina local y posiblemente podría proporcionar un mecanismo de carga.
Si bien aprecio su sugerencia de Jupyter, estoy pensando en algo como un CMS que maneje el almacenamiento y la búsqueda de archivos de datos tendría más sentido. Tal vez un CMS que permita incrustar cuadernos Jupyter.

¿Por qué no pruebas un framework web de Python? ¿Te gusta Flask?

Esto le daría la flexibilidad que necesita, y puede diseñarlo para hacer lo que desee.

Esperaba una sugerencia más específica. He mirado Flask, Django y Web2py. Como no tengo experiencia con el desarrollo web, me resulta difícil determinar las ventajas y desventajas de cada uno.
Flask no tiene restricciones en el sentido de que puede decirle que haga cualquier cosa sin la necesidad de modelos de base de datos complicados y otras cosas, eche un vistazo a una aplicación de ejemplo . Es muy, muy fácil de entender si tienes algo de python y una pequeña cantidad de conocimiento de html.
Si bien no tengo ninguna duda de que Flask es capaz de implementar mis necesidades, me parece de un nivel más bajo que otros marcos. Casi no tengo experiencia en desarrollo web. Esperaba que el marco pudiera proporcionar capacidades enlatadas para al menos algunas de mis necesidades, como la gestión de datos.
¿Crees que tal vez un CMS sería mejor?
Sí, sin embargo, buena suerte para encontrar un CMS prefabricado que cumpla con todos los requisitos que necesita. He estado allí, hecho eso. Puede crear su propio CMS con Flask y simplemente tener un javascript ajax para ejecutar el código python, o puede probar Django, otro marco muy similar a Flask. Ambos serían adecuados ya que todo está basado en Python: lo que usarán sus usuarios.

Si tiene el presupuesto para ello, podría (como lo hace la empresa para la que trabajo), alojar un Enterprise GitHub detrás de su cortafuegos (con un precio actual de $2500 por 10 usuarios/año), o en un área segura en servidores GitHubs con un túnel adecuado.

  • Interfaz de usuario familiar para desarrolladores
  • También proporciona "Páginas de GitHub" para permitir la publicación general
  • Mecanismo de liberación
  • Mecanismos de revisión
  • herramientas de búsqueda
  • Gran almacenamiento de archivos
  • GitHub puede representar Jupyter/iPython Notebooks ( .ipynbarchivos) como se anuncia aquí .

El uso de Jupyter Notebooks alojado en una instancia de GitHub puede, como puede ver aquí , permitirle mezclar texto descriptivo, fórmulas, código, diagramas, imágenes e incluso videos de YouTube.

La Galería de interesantes Jupyter Notebooks en GitHub ofrece una demostración de la gama de contenido disponible.

NB Soy un usuario regular de GitHub pero no trabajo para ellos ni tengo ningún otro interés financiero en la corporación.