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