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