2010-01-17 8 views
42

Escribo software científico en Numpy/Scipy/Matplotlib. Habiendo desarrollado aplicaciones en la computadora de mi casa, ahora estoy interesado en escribir aplicaciones web simples. Ejemplo: el usuario carga una imagen o archivo de audio, mi programa lo procesa usando Numpy/Scipy, y la salida se muestra en el navegador usando Matplotlib, o quizás el usuario puede descargar un archivo procesado.Alojamiento web Python: Numpy, Matplotlib, Scientific Computing

Ya pago por el alojamiento que tiene instalado Python 2.4.3, pero no Numpy/Scipy. No tengo acceso de shell a través de la línea de comandos, tampoco. Simplemente arrastre y suelte el FTP. Bastante limitado, pero puedo hacer que funcionen scripts Python/CGI simples.

Sorprendentemente, una búsqueda web reveló pocas opciones adecuadas para el alojamiento web con estas capacidades ya incorporadas. (Por favor, guíenme si estoy equivocado). Estoy aprendiendo sobre el Google App Engine, pero todavía no tengo un Comprensión completa sobre sus herramientas y limitaciones. Lo que la web hizo decirme es que otros tienen inquietudes similares.

Con la esperanza de soluciones, pensé que volvería a pedir estas simples preguntas a la comunidad impresionante SO:

  1. ¿Hay una manera sencilla de instalar numpy (o cualquier paquete de terceros/biblioteca) en mi ya espacio alojado Conozco el camino de Python en mi espacio alojado, y conozco los directorios Python/Numpy relevantes en la computadora de mi casa. ¿Puedo simplemente copiar los archivos y hacer que funcione? Ambos sistemas locales y remotos ejecutan Ubuntu.

  2. ¿Qué sitios de alojamiento existen (gratuitos o de pago) que tienen instalado Numpy/Matplotlib o, si no están instalados, la posibilidad de instalarlo? ¿Hay sitios documentados a los que pueda hacer referencia con aplicaciones en funcionamiento, sin importar cuán simple sea?

  3. ¿Puede Google App Engine ayudarme de alguna manera? ¿O es totalmente para otra cosa? ¿Ustedes u otros lo han usado para escribir aplicaciones científicas en Python/Numpy? Si es así, ¿podría hacer referencia a ellos?

Gracias por su ayuda.

EDITAR: Después de las útiles respuestas a continuación, compré el plan de $ 20 en Slicehost, y ¡me encanta hasta ahora! (Primero probé Amazon EC2. Debo ser estúpido, pero no pude hacer que funcionara). Configurar el servidor Ubuntu con Apache tomó solo unas horas (y soy un novato de Apache). Me permite hacer exactamente lo que quería con Python y mucho más. Ahora tengo mi propio repositorio remoto para control de versiones. ¡Gracias de nuevo!

EDIT 2: Casi dos años después, probé Linode y EC2 (nuevamente). Linode es genial. EC2 parecía más fácil esta vez, quizás solo sea experiencia agregada, o tal vez sean las mejoras que Amazon hizo a la consola de administración de AWS. Para aquellos interesados ​​en Numpy/Scipy/Matplotlib/Audiolab, aquí está mi Ubuntu hoja de trucos cada vez que pongo en marcha una instancia EC2:

ec2:~$ sudo aptitude install build-essential python-scipy ipython 
     python-matplotlib python-dev python-setuptools libsndfile-dev 
     libasound2-dev mysql-server python-mysqldb 

Upload scikits.audiolab-0.11.0 

ec2:~/scikits.audiolab-0.11.0$ sudo python setup.py install 

ec2:~$ sudo rm -rf scikits.audiolab-0.11.0 

ec2:~$ nano .ipython/ipy_user_conf.py 

ip.ex('import matplotlib; matplotlib.use("Agg"); import scipy, pylab, 
     scipy.signal as sig, scipy.linalg as lin, scipy.sparse as spar, 
     os, sys, MySQLdb, boto; from scikits import audiolab') 

import ipy_greedycompleter 

import ipy_autoreload 

Respuesta

16

1: Instalación de paquetes de terceros a los espacios alojados

Usted puede de hecho instalar paquetes de terceros para su espacio organizado. Si se trata de un paquete python puro, todo lo que se necesita es descomprimirlo en un directorio y luego agregar ese directorio a su variable de entorno PYTHONPATH o sys.path.

Esto puede ser agotador de hacer a menudo, y no funcionará fácilmente para los módulos compilados. Si tiene acceso de shell a su host de python, el excelente paquete virtualenv le permite configurar un entorno de python privado con sus propias bibliotecas.

para configurar su virtualenv, que va a hacer algo como esto en la shell:

$ virtualenv $HOME/my_python 
$ $HOME/my_python/bin/easy_install numpy 

Puede seguir funcionando easy_install para cualquier otra cosa que desea instalar en su entorno pitón personal.

Ahora, al escribir sus scripts de Python, se desea utilizar el intérprete de Python privada, si eso es posible:

#!/home/myuser/my_python/bin/python 

import numpy 

# script here 

Si su env python no se puede especificar (por ejemplo, si se ejecuta por mod_wsgi) , tendrá que añadirlo a la ruta de importación:

import sys 
sys.path.insert(0, '/home/myuser/my_python/lib/python2.5/site-packages') 

import numpy 

2: sitios de alojamiento con numpy

no puedo piense en cualquier sitio de alojamiento que ofrezca numpy preinstalado. Sin embargo, Dreamhost/Bluehost for sharedhosts proporciona acceso SSH, y con el acceso al shell puede instalar numpy usando los métodos que he descrito anteriormente. Cualquier servidor privado virtual, como Linode/Slicehost, le permitirá instalar lo que desee, también.

3: AppEngine

Como se mencionó anteriormente, App Engine no se permitirá la instalación de extensiones en C (pero los pitón puros hacen el trabajo) por lo que es numpy poco probable va a trabajar para usted en allí, ya que sospecho algunos de sus características usan C aceleraciones.

+0

Gracias por el consejo útil. Voy a probar esto en la medida en que lo permita mi cuenta. –

+0

No use sys.path.insert(), use site.addsitedir() en su lugar. Este último interpreta correctamente los archivos .pth en el directorio site-packages. También hay problemas de reordenamiento que debe tratar también. Lea "http://code.google.com/p/modwsgi/wiki/VirtualEnvironments". –

+0

numpy y matplotlib no son compatibles con el motor de aplicación w/python 2.7 –

12

App Engine no admite ninguno de numpy, scipy o matplotlib, por desgracia.

Si sabe exactamente qué SO y CPU utiliza su host, puede hacer una instalación idéntica para usted, descargar e instalar la misma versión de Python que está utilizando, descargar las fuentes de los paquetes que necesita y compilarlos en .so (o .pyd, según la plataforma) archivos, y subirlos, parece un verdadero tour de force.

Cualquiera de los muchos, muchos sitios que ofrecen alojamiento virtual normal (una máquina virtual, por lo general de Linux, con recursos modestos HW, pero los privilegios de root para usted, el acceso shell ssh, y una gcc puede utilizar en particular) será más fácil trabajar con mucho - ¡esencialmente, descargará e instalará el software que necesita exactamente de la misma manera que lo haría en su propia estación de trabajo Linux!

+0

Para alojamiento virtual. He estado usando Slicehost. Amazon EC2 es otra opción popular. – airportyh

+0

Simplemente otro voto para pasar a la solución de servidor virtual. Me he quemado al armar una solución en un host compartido, solo para ser derribado por un cambio en la política administrativa por parte del servicio de alojamiento. He utilizado una cuenta de servidor virtual en www.maxvps.com durante dos años con gran éxito en la instalación de cualquier fuegos artificiales de Python que desee. –

+0

Alex: gracias por la respuesta clara. Entonces, con uno de estos servidores virtuales comunes, con privilegios de root y acceso al shell, ¿podría instalar paquetes con un montón de "apt-get install" como lo hago en casa? Eso seria genial. En interés del dinero, primero veré si puedo modificar mi espacio existente para que funcione. –

6

Aún no tengo los privilegios de comentar, pero puedo dar una "respuesta".

3: AppEngine

Numpy ya está disponible en Google App Engine: https://code.google.com/p/googleappengine/issues/detail?id=190

Sin embargo, matplotlib sigue esperando: http://code.google.com/p/googleappengine/issues/detail?id=482 Tal vez más personas protagonizada por este tema hará que suceda.

voy a señalar que svgfig es una opción, ya que es puro Python: http://code.google.com/p/svgfig/

Actualización:

Resulta que matplotlib ya está disponible: https://developers.google.com/appengine/docs/python/tools/libraries27#matplotlib

+0

¡Gracias por señalar esta reciente adición (hace una semana) a GAE! http://googleappengine.blogspot.in/2012/02/announcing-general-availability-of.html –

7

2 ¿Cuál de alojamiento existen sitios (gratuitos o de pago) que tienen instalado Numpy/Matplotlib

PythonAnywhere ofrece alojamiento web y un IDE en el navegador simple; muchos paquetes de Python (incluidos NumPy y Matplotlib) son pre-installed. Hay un plan gratuito que puede usar para jugar, y las cuentas "Premium" y "Hosting" con más funciones cuestan $ 5 y $ 10 por mes, respectivamente.

Descripción completa: Yo trabajo allí ...

Cuestiones relacionadas