RE: [Python-es] Directorio de la aplicación y py2exe

Sebastián Lezica slezica en fibertel.com.ar
Mie Ene 19 17:12:55 CET 2005


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




Más información sobre la lista de distribución Python-es