Re: Segun se invoque programa.py
Raúl Alexis Betancor Santana <[email protected]>
| Newsgroups | gmane.comp.python.general.castellano |
|---|---|
| Organization | Dimensión Virtual S.L. |
| Message-ID | <[email protected]> |
On Thursday 24 September 2009 15:35:49 Juan M Puertas wrote: > lasizoillo ha escrito: "... busca algún argv[0] por el código (es la > variable con el nombre del programa), que creo que van a ir por allí los > tiros ;-) " > > * ¡Exacto!. :-) La clave está aquí: > > #directories > PREFIX=os.path.split(os.path.split(sys.argv[0])[0])[0] > DATADIR=os.path.join(PREFIX,'share','openastro.org') > > Es decir; que el programa obtiene el camino en el que se está ejecutando > la aplicación, y de éste deduce dónde se encuentra la carpeta > "openastro.org". En este caso, está en "/usr/share" Por lo tanto se arregla > creando la carpeta "share" en el mismo camino en que se encuentra > "programa.py", y copiando dentro de "share" la carpeta "openastro.org" que > necesita la aplicación. El problema ya ha sido resuelto pero me queda la > curiosidad de que "programa.py" está en el mismo directorio que los > ejecutables de python; es decir: "/usr/bin", y su carpeta "openastro.org", > se instala en "/usr/share". ¿Porqué cuando se invoca con el nombre del > programa, éste encuentra su carpeta de trabajo en "/usr/share", y cuando se > invoca con Python o el entorno de desarrollo no?. Debe ser alguna > particularidad de Linux/Unix que desconozco... El porqué del falló está clarísimo ... ----------- /usr/local/bin/test.py ------------------ #!/usr/bin/python import sys import os print sys.argv[0] print os.path.split(os.path.split(sys.argv[0])[0])[0] --------------------------------------------------------- chmod +x /usr/local/bin/test.py Ahora lo invocamos desde cualquier sitio: salma:~# test.py /usr/local/bin/test.py /usr/local salma:~# python /usr/local/bin/test.py /usr/local/bin/test.py /usr/local Ahora lo invocamos desde /usr/local/bin salma:~# cd /usr/local/bin/ salma:/usr/local/bin# ./test.py ./test.py Meeeeeeeccccccc ... ¿ves el error?, no puedes usar sys.argv[0], tan alegremente ... para este tipo de cosas, lo mejor es un archivo de configuración donde guardar esos valores. -- Raúl Alexis Betancor Santana Dimensión Virtual _______________________________________________ Lista de correo Python-es http://listas.aditel.org/listinfo/python-es FAQ: http://listas.aditel.org/faqpyes