llamar a modulos desde menu

fermunyoz en softhome.net fermunyoz en softhome.net
Vie Dic 26 13:54:35 CET 2003


HL a todos. 

Estoy realizando una serie de juegos con pygame,y tengo un menu para 
llamarles  a todos y tb a unos archivos de funciones,con una estructura de 
directorios como esta: 

/root/juegos/
            /juego1/
                   juego1.py
                   juego11.py
                   ....py
            /juego2/
                   juego2.py
                   ....py
            /juego3/
                   ....py
             .....
            /datos/
                imagenes/
                sonidos/
            /lib/
                herramienta1.py
                .....py 

            menu.py

Todos los juegos estan dentro de una funcion:
 def main():
            .....
            .....
 if __name__ == '__main__': main() 

Asi para llamr a un juego desde otro juego dentro del mismo directorio hacia 
lo siguiente: 

import juego11 

   juego11.main() 

Para lllamarles desde el menu y asi solo teer que ejecutar el menu e ir 
caragando cada juwgo desde el mismo menu,he creado un archivo menu.py con 
una serie de botones que hace lo siguiente: 

#para situarnos en /root/juegos/
dir=os.path.abspath(sys.argv[0])
bajar=os.path.split(dir)[0]
os.chdir(bajar) 

def main():
          #si pulsamos el boton deun juego en concreto (juego1)
           juego1=os.path.join(bajar,'juego1') #directorio del primer juego
	    os.chdir(juego1)             #nos situamos en ese directorio
	    sys.path.append(juego1)      #añadimos al pythonpath
	    import juego1     #imprtamos solo el 1º q es el unico q qeremos (los 
demas los llamamos a parti de este) 

if __name__ == '__main__': main() 

Tambien dentro de cada primer juego antes de la funcion pricipal hago esto: 

dir=os.path.abspath('')
bajar=os.path.split(dir)[0]
os.chdir(bajar) 

para situarnos en el direcctorio /root/juegos/, y asi poder llamar a los 
modulos de datos/ y lib/ (librerias usadas por todos los juegos). 

Weno hasta ahora no tenia ningun problemay todo funciona bien, pero el 
problema viene cuando desde cada juego que he puesto un boton para ir al 
menu haciendo: 

import menu 

#si apreto el boton de menu
menu.main() 

Y la verdad es q me carga el menu correctamente(vuelve al menu), pero aki es 
donde viene el problema, que cuando vuelvo a querer entrar en un juego otra 
vez desde el menu apretando un boton me da un error y se sale del programa: 

OSError: [Errno 2] No such file or directory: '/root/juegos/juego1/juego1' 

El problema es que se queda un nivel de directorios mas arriba que el de 
/root/juegos/ se queda en /root/juegos/juego1, y a partir de alli buscael 
siguiente juego(juego1 en est caso).
He probado ya muchisimas cosas y se q ahcer mas por eso lo pongo en la lista 
haber si hay alguien q me pueda ayudar pq estoy un poko desesperado ya. 

Agradeceria la ayuda para solcionar esto, o si alguien conoce otras formas 
aunq no sean mas sencillas de ir llamando a los modulos desde un menu y 
volver al mismo, con esta estructura de directorios, o si alguien tiene ago 
parecido si puediera enviarme el codigo explicandome un poko como lo hizo se 
lo agradeceria pq stoy estancao ya. 

GRACIAS




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