Re: Directorio de la aplicación y py2exe

Jeremias jeremiasc en gmail.com
Mie Ene 19 22:09:57 CET 2005


Mirá no se si es justamente lo que estas buscando pero según lo que
entendí te puede llegar a servir.

Tengo una aplicación que compilo con py2exe, dentro del directorio de
la aplicación tengo un directorio llamado lib en el cual tengo scripts
que luego importo desde esta aplicación, para que mi aplicación
conozca el directorio lib uso estas lineas y funciona perfecto, no
importa desde donde ejecute la aplicación.

import os.path
import sys
home=os.path.abspath(os.path.dirname(sys.argv[0]))
dir_lib=os.path.join(home, 'lib')
sys.path.insert(0, dir_lib)

Espero que se entienda y te sirva de algo.

Saludos

jrms

On Wed, 19 Jan 2005 16:40:47 -0300, Sebastián Lezica
<slezica en fibertel.com.ar> wrote:
> Hola Toni,
> 
>         Perdón!!!, revise de nuevo y lo que te dije de la variable de
> entorno _MEIPASS2 era del McMillan Installer que es el que uso desde esa
> epoca aprox., no py2exe... Así que nada, hago agua.
> 
>         No te sirve os.path.abspath('./') tampoco?.
>         Sinó, podes chequear con os.path.isdir / os.path.isfile en caso que
> quieras cubrirte si queres de directorios que parezcan ficheros.
> 
> Bueno, un abrazo,
> 
> Sebastián Lezica
> 
> -----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 15:58
> Para: 'La lista de python en castellano'
> Asunto: RE: [Python-es] Directorio de la aplicación y py2exe
> 
> 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
> >
> 
> _______________________________________________
> 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