Re: Segun se invoque programa.py

Juan M Puertas <[email protected]>
Newsgroups gmane.comp.python.general.castellano
Message-ID <[email protected]>
 Interesante Hernan, lo tendré en cuenta.
 Muchas gracias a ti y a todos. :-)




________________________________
De: Hernan M Foffani <[email protected]>
Para: Lista de discusión sobre python en castellano <[email protected]>
Enviado: viernes, 25 de septiembre, 2009 15:17:22
Asunto: Re: [Python-es] Segun se invoque programa.py

Pero ten en cuenta que el directorio corriente puede ser distinto del directorio
donde se encuentra la aplicación. Si quieres lo último utiliza __file__ (aunque
no sirve en todas las situaciones)


2009/9/25 Juan M Puertas <[email protected]>:
>  Pues si, Raúl y Hernan, no soy el autor del programa, que por otra parte es muy brillante, y utiliza técnicas muy avanzadas.
>  En mi poca experiencia, prefiero esto: "CaminoAplicacion = os.getcwd()" que muestra el directorio en el que se está ejecutando la aplicación.
>  Saludos :-)
>
>
>
>
> ________________________________
> De: Hernan M Foffani <[email protected]>
> Para: Lista de discusión sobre python en castellano <[email protected]>
> Enviado: viernes, 25 de septiembre, 2009 12:04:26
> Asunto: Re: [Python-es] Segun se invoque programa.py
>
>>> 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.
>
> Hombre... Si sabes qué contiene sys.argv[0] lo puedes usar sin sentir
> tristeza. ;-)
> Para no complicarme la vida he optado por dos esquemas simples y
> excluyentes. O empaqueto todo (python puro) y lo mando a site-packages
> via un .egg, o distribuyo mediante instaladores nativos en cuyo caso
> incluyo mi propio intérprete.
>
> Para el caso original de J.M.Puertas, una modificación pequeña al
> script reemplazando sys.argv[0] por __file__ y un par de cosillas mas
> quizás sería suficiente.
> _______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes
>
>
>
>
> _______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes
>
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes



      
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.