Publicar aplicacion Python
Chema Cortés
py en ch3m4.org
Lun Feb 27 01:51:09 CET 2006
El Domingo, 26 de Febrero de 2006 23:12, Juan M. Puertas escribió:
> Hola. He conseguido sobrepasar el error inicial: - "AttributeError:
> 'module' object has no attribute 'datetime' "-. Para ello he creado una
> carpeta "cherrypy" junto al script en python que genera la página web. He
> copiado en la citada carpeta la estructura de archivos y carpetas que se
> crea al instalar la versión 2.1.1 de Cherrypy. En el servidor está la
> versión 2.2.0beta. Ahora tengo los mismos archivos y estructura en casa y
> en el servidor.
> Ahora por fin aparece el formulario, al introducir los datos y
> seleccionar el botón "Calcular", entonces dá un error que no aparece en el
> ordenador de casa:
> ____________________________________________
> File "/usr/local/lib/python2.4/string.py", line 292, in split
> return s.split(sep, maxsplit)
> AttributeError: 'NoneType' object has no attribute 'split'
> ____________________________________________
A mi me ocurre como a Luis Miguel, que no entiendo nada de cómo lo tienes
configurado. Según parece, el script se lanza como cgi. En este caso, por
defecto se va a usar el python del sistema, y no la versión 2.4. A partir de
ahí puede pasar cualquier cosa. ¿Qué hay puesto en la primera línea del
script CGI?
También resulta fundamental saber dónde va a buscar los módulos. Haz que te
imprima el sys.path. Sólo así se puede saber de dónde saca los módulos.
En cuanto a la ejecución interactiva, lanza el python con la opción verbose
(-v) para seguir la cadena de importaciones. En algún momento entras en un
bucle de importaciones (módulo A importa módulo B que importa módulo A).
Estos bucles son los responsables de que un módulo aparezca como importado,
pero completamenta vacío (sin atributos).
> Por cierto que, en estas cosas de alojar webs dinámicas soy tan novato
> que no entiendo porqué cuando salgo de Putty, el script deja de correr y
> por lo tanto mi ordenador de casa tendría que estar siempre conectado para
> que funcione la web que está alojada en el servidor remoto.
Es lo habitual. Cuando un proceso se mata, mueren todos los procesos hijos. Si
no quieres que ocurra así, tendrás que asociar la ejecución del proceso al
proceso init (mírate el comando nohup). Aún así, la mejor opción es conseguir
que apache ejecute el script en el momento que entra el usuario. En la web de
cherrypy tienes documentación para configurar apache.
Más información sobre la lista de distribución Python-es