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