Ver Mensaje Individual
  #7 (permalink)  
Antiguo 05/08/2013, 10:01
Enjavado
Invitado
 
Mensajes: n/a
Puntos:
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