RE: [Python-es] Directorio de la aplicación y py2exe
Amm-Python
python en ammsoft.com
Mie Ene 19 19:58:16 CET 2005
Lo del './' no me sirve.
Esta es la solución que voy a aplicar y que en principio funciona
correctamente:
p = sys.path[0]
if p.lower().endswith(".zip") or p.lower().endswith(".exe"):
p = os.path.dirname(p)
r = os.path.abspath(p)
El único problema que puede darse es que a la carpeta donde está el
programa se le llame loquesea.zip o loquesea.exe
Pero creo que puedo arriesgarme.
> -----Mensaje original-----
> De: python-es-bounces en aditel.org
> [mailto:python-es-bounces en aditel.org] En nombre de Sebastián Lezica
> Enviado el: dimecres, 19 / gener / 2005 17:13
> Para: 'La lista de python en castellano'
> Asunto: RE: [Python-es] Directorio de la aplicación y py2exe
>
>
> Si mal no recuerdo, usando './' como path base tu aplicación
> funciona con/sin py2exe sin problemas.
>
> Viendo un código viejo veo usaba una variable de entorno que
> genera py2exe, '_MEIPASS2'. En todo caso fijate en la
> documentación porque no tengo presente si es la ruta temporal
> donde se descomprime o justamente la ruta desde donde se
> ejecuta la aplicación (creo que es esta ultima, la que
> querias, justamente). En todo caso, podrias hacer algo como:
>
> import os
> try: apppath = os.environ['_MEIPASS2']
> except: apppath = './'
>
> Sobre tu último comentario de importar modulos externos luego
> de generado el exe, sep!, justamente de la aplicación que
> saqué lo de la variable de entorno hacia eso y lo unico que
> hacia era agregarla al path con
> sys.path.append(os.environ['_MEIPASS2']) (recorda controlar
> el posible error en caso de que lo ejecutes sin py2exe); de
> esta forma podia importar los modulos que encontraba en
> apppath al ejecutarse, y permite 'parchear' tu aplicación sin
> cambiar el exe completo.
>
> Espero te sirva, lamento no recordar con mucha precisión el tema,
>
> Sebastián Lezica
> http://www.dosalinfinito.com.ar
>
> -----Mensaje original-----
> De: python-es-bounces en aditel.org
> [mailto:python-es-bounces en aditel.org] En nombre de Amm-Python
> Enviado el: Miércoles, 19 de Enero de 2005 10:24
> Para: Python Lista Aditel
> Asunto: [Python-es] Directorio de la aplicación y py2exe
>
>
> En el directorio de la aplicación tengo varios directorios
> para colocar logotipos, ficheros de configuración, etc.
>
> Para acceder a ellos miro cual es el directorio de la
> aplicación y a partir de él calculo las rutas de los ficheros
> que necesito.
>
> Es decir:
>
> import sys
>
> path = sys.path[0] #para conseguir el directorio del script
> filecfg = path + "/config/cfg.ini" .............Resto del
> script............
>
> Que pasa si compilo con py2exe?. Sobre todo si mantengo la
> estructura y el directorio complementario no lo incluyo en py2exe.
>
> Pues que cuando hago el path = sys.path[0] me devuelve el
> path del exe
> + "/libray.zip" y como es lógico no funciona
> Por lo que debo modificar el script de esta forma:
>
> #quito un nivel del path
> h,t = os.path.split(path)
> path = h
> filecfg = path + "/config/cfg.ini"
> .............Resto del script............
>
> Cual es mi problema.
> Pues que ahora no funciona el script a pelo.
>
> Pregunta: Cómo puedo saber si el script se ejecuta a pelo o
> está compilado con py2exe?
>
> Un saludo,
> Toni
>
> P.D.
> Supongo que desde aplicaciones realizadas con py2exe se
> pueden hacer imports de otros módulos que estén fuera del exe
> o del library.zip. Alguien a experimentado sobre este tema?
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org http://listas.aditel.org/listinfo/python-es
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org http://listas.aditel.org/listinfo/python-es
>
Más información sobre la lista de distribución Python-es