Respuesta: Convertir .py en .exe en Python Hola chicos/as:
He utilizado cx_Freeze, parecido a py2exe
Me crea el .exe con windows en una carpeta llamada build
pero cuando abro el ejecutable desde la consola me lanza este fallo:
File "C:\Python26\Lib\site-packages\cx_Freeze\initscripts\Console.py" , line 27
, in <module>
exec code in m.__dict__
File "menu_libro_blanco.py", line 9, in <module>
File "C:\Python26\modulepythong.py", line 844, in <module>
f=open(filename, "r")
IOError: [Errno 2] No such file or directory: "C:\\Python26\\build\\exe.win32-2.6
\\menu_libro_blanco"
Te facilito los 2 archivos el juego y el setup.py JUEGO (menu_libro_blanco)
Código:
# MENU JUEGO
# ==========
# Importamos libreria de tiempo
import time
# Importamos todas las funciones del modulo (modulepythong)
from modulepythong import *
# Importamos todo el modulo random
import random
window_coordinates(0, 0, 400, 400) # GENERAMOS RESOLUCION
window_style("The Spaceship Game","black","TODO") # FONDO DE COLOR BLANCO
#-----------------------------------------------------------------------#
create_text(200,350,"The Spaceship Game",13.5,"CENTER","blue")
create_text(200,300,"_Easy level (E)",10,"CENTER")
create_text(200,250,"_Medium level (M)",10,"CENTER")
create_text(200,200,"_Hard level (H)",10,"CENTER")
create_text(200,150,"_Exit(X)",10,"CENTER")
#-----------------------NIVELES DE JUEGO--------------------------#
a = str("j")
while a != "x":
window_style('The Spaceship Game','black','TODO') # FONDO DE COLOR BLANCO
create_text(200,350,"The Spaceship Game",13.5,"CENTER","blue")
create_text(200,300,"_Easy level (E)",10,"CENTER","white")
create_text(200,250,"_Medium level (M)",10,"CENTER","white")
create_text(200,200,"_Hard level (H)",10,"CENTER","white")
create_text(200,150,"_Exit(X)",10,"CENTER","white")
#--NIVEL FACIL--#
if keypressed(2) == str("e"):
print "Nivel facil"
import time
from modulepythong import *
from math import sin, cos, pi
window_style('The Spaceship Game','white','TODO') # FONDO DE COLOR BLANCO
# Paisaje
altura_paisaje = 400
anchura_paisaje = 400
window_coordinates(0, 0, anchura_paisaje, altura_paisaje)
# Gravedad
g = 0.00001
# Nave
tamanyo_nave = 10
x = anchura_paisaje / 2
y = altura_paisaje - 100
vy = 0
impulso_y = 2*g
impulso_x = 0.00001
vx = 0
nave = create_filled_rectangle(x, y, x+tamanyo_nave, y+tamanyo_nave, 'blue')
# Plataforma
px = anchura_paisaje / 2
py = 0
vpx = .05
anchura_plataforma = 40
altura_plataforma = 3
plataforma = create_rectangle(px, py,px+anchura_plataforma, py+altura_plataforma, 'red')
# Tanque de combustible
color = "green" # combustible lleno
fuel = 1000
consumo = 0.1
rect_inicio = create_rectangle(0,altura_paisaje, 10, altura_paisaje-100, 'black')
lleno = create_filled_rectangle(1,altura_paisaje, 9, altura_paisaje-fuel/10, color)
create_text(25, altura_paisaje-8, '0%', 10, 'W')
create_text(30, altura_paisaje-95, '100%', 10, 'W')
# Dial de velocidad
circulo = create_circle(anchura_paisaje-50, altura_paisaje-50, 50, 'black')
for i in range(0, 360, 10):
create_line(anchura_paisaje-50 + 40 * sin(i*pi/180), \
altura_paisaje-50 + 40 * cos(i*pi/180), \
anchura_paisaje-50 + 50 * sin(i*pi/180), \
altura_paisaje-50 + 50 * cos(i*pi/180),)
if i % 30 == 0:
create_text(anchura_paisaje-50 + 30 * sin(i*pi/180), \
altura_paisaje-50 + 30 * cos(i*pi/180), str(i), 5, 'CENTER')
aguja = create_line(anchura_paisaje-50, altura_paisaje-50, \
anchura_paisaje-50 + 50 * sin(0*pi/180), \
altura_paisaje-50 + 50 * cos(0*pi/180),"black")
facil = create_text(200,200,"Level Easy",12,"CENTER","blue")
time.sleep(2)
erase(facil)
# Simulacion
while y > 0 and y < altura_paisaje and x > 0 and x < anchura_paisaje - tamanyo_nave:
vy -= g
if keypressed(1) == 'Up' and fuel > 0:
vy += impulso_y
fuel -= consumo
if fuel < 350:
color = "red" # combustible vaciandose
elif keypressed(1) == 'Left' and fuel > 0:
vx -= impulso_x
fuel -= consumo
if fuel < 350:
color = "red" # combustible vaciandose
elif keypressed(1) == 'Right' and fuel > 0:
vx += impulso_x
fuel -= consumo
if fuel < 350:
color = "red" # combustible vaciandose
y += vy
x += vx
px += vpx
if px <= 0 or px >= anchura_paisaje - anchura_plataforma:
vpx = -vpx
move(nave, vx, vy)
move(plataforma, vpx, 0)
viejo_lleno = lleno
lleno = create_filled_rectangle(1,altura_paisaje, 9, altura_paisaje-fuel/10, color)
erase(viejo_lleno)
vieja_aguja = aguja
aguja = create_line(anchura_paisaje-50, altura_paisaje-50, \
anchura_paisaje-50 + 50 * sin(1000*vy*pi/180), \
altura_paisaje-50 + 50 * cos(1000*vy*pi/180), 'black')
erase(vieja_aguja)
msg_x = anchura_paisaje/2
msg_y1 = altura_paisaje/2
msg_y2 = altura_paisaje/3
if y >= altura_paisaje:
create_text(msg_x, msg_y1, 'Perdiste', 24, 'CENTER')
create_text(msg_x, msg_y2, 'Rumbo a las estrellas?', 12, 'CENTER')
elif y <= 0 and vy < -0.1:
create_text(msg_x, msg_y1, 'Perdiste', 24, 'CENTER')
create_text(msg_x, msg_y2, 'Te has estrellado.', 12, 'CENTER')
elif y <= 0 and \
abs((px+anchura_plataforma/2)-(x+tamanyo_nave/2)) >= anchura_plataforma/2:
create_text(msg_x, msg_y1, 'Perdiste', 24, 'CENTER')
create_text(msg_x, msg_y2, ' !Que mala puntería!', 12, 'CENTER')
elif x <= 0 or x >= anchura_paisaje - tamanyo_nave:
create_text(msg_x, msg_y1, 'Perdiste', 24, 'CENTER')
create_text(msg_x, msg_y2, 'Chocaste con la pared.', 12, 'CENTER')
else:
create_text(msg_x, msg_y1, 'Ganaste', 24, 'CENTER')
create_text(msg_x, msg_y2, ' !Enhorabuena, piloto!', 12, 'CENTER')
time.sleep(4)
erase(nave)
erase(plataforma)
erase(rect_inicio)
erase(lleno)
#-----------------------------------------------------------------#
elif keypressed(2) == str("m"):
print "Nivel medio"
elif keypressed(2) == str("h"):
print "Nivel dificil"
#-----------------------------------------------------------------#
elif keypressed(2) == str("x"):
print "Saliendo..."
a = keypressed(2)
else:
error = create_text(200,50,"Error! Press another key",11,"CENTER","red")
time.sleep(2) # Espera 2 segundos y borra el objeto(mensaje)
erase(error)
print"salistes"
Setup(setup.py)
Código:
from cx_Freeze import setup, Executable
setup(
name = "" ,
version = "0.1" ,
description = "" ,
executables = [Executable("menu_libro_blanco.py")]
)
Bueno, te digo he utilizado la librería modulepythong para la creación, y ya he compilado otros programas sin librería y los compila bien. Les facilito URL de los programas que utilice
http://www3.uji.es/~dllorens/downloads/pythong/
http://cx-freeze.sourceforge.net/
Les agradezco toda la ayuda.
Última edición por Enjavado; 05/08/2013 a las 10:09 |