Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - n1sen

#51
Cita de: Sentex en 29 Septiembre 2017, 18:23 PM
Para los que trabajéis en linux como yo xd aquí  tenéis la solución!

www.github.com/MrSentex/py2exe/

No es el py2exe normal y corriente es que me quede sin ideas XD.
Pero solo compila versiones de Python 2, igualmente, lo voy a poner.
:)
edito:
Pero en linux lo convierte a .exe o a un programa compilado que corre linux?, el cual no se... xD
Ok, leí mal el readme de tu proyecto, ahora si lo he entendido :P
#52
Gracias! Espero que esto no se pierda entre los temas, pero por si acaso, pon marcador a este tema
#53


Por favor, si te ha gustado o te ha funcionado, guarda esta página en tus marcadores, ya que cada vez le iré añadiendo más información y también por que lamentablemente se perderá en todos los temas que se publican acá  :-(.



Hola, hoy vengo a dar un aporte, que es el siguiente: como convertir de .py a .exe
Bien, sin mas preámbulo empecemos:


1 - Primero de todo, necesitamos pywin32.
Para eso, vamos a la siguiente página: Python for Windows Extensions



Acá, como vemos en la imagen, veremos muchas versiones para descargar.
La versión que quieras descargar depende de tu pc y de la versión de Python que usas.
En este caso, yo tengo un pc de 64 bits y uso Python 3.6, así que descargare la versión que dice: pywin32-221.win-amd64-py3.6.exe
Si tienes un pc de 32 bits y usas Python 3.6, descarga la versión que dice pywin32-221.win32-py3.6.exe
Si usas otras versiones de Python, ahí puedes elegir según la versión que tengas.


2 - Ahora instalaremos el módulo pyinstaller
Ahora tenemos que abrir el Símbolo de sistema (cmd) en modo administrador.
Para eso, presionamos la tecla Windows y la tecla "x", ahí les aparecerá lo siguiente "Símbolo de sistema (administrador)"
le das clic y le das permiso...

Otra seria buscar en la barra de tareas, y poner cmd, le dan clic derecho y de ahi le dan a "Ejecutar como administrador"

Ya, una vez ya abierto nuestro cmd en modo administrador, ponemos esto:
Código (bash) [Seleccionar]
pip install pyinstaller
De ahi les cargara y esperan a que se termine de instalar.



En mi caso no lo instalo por que ya lo tengo instalado  :rolleyes:
Si quieren actualizar o ver si hay actualizaciones para el módulo pyinstaller
pongan:
Código (bash) [Seleccionar]
pip install --upgrade pyinstaller

Si quieren ver más; acá les dejo la página de pyinstaller: Pyinstaller Page
Ahí tienen la documentación y más información.


3 - Ahora viene lo divertido, compilamos de .py a .exe!
Creamos un programa cualquiera en Python:

Código (python) [Seleccionar]

print("Hola mundo!")

input("") # Es para evitar que se salga el programa


Ahora abrimos otra vez el cmd, esta vez en modo normal, presionando la tecla Windows y la tecla "r"
de ahi ponen cmd y dan a enter.

Una vez ya abierto el cmd, escribimos cd y seguido de de la ruta del archivo
Ejemplo:
Código (bash) [Seleccionar]
cd C:\Users\usuario\Desktop\
No así:
Código (bash) [Seleccionar]
cd C:\Users\usuario\Desktop\miprograma.py



Empieza lo divertido, convertir a .exe!
Escribimos ahora en el cmd lo siguiente:
Código (bash) [Seleccionar]
pyinstaller nombre_del_programa.py

De ahi, presionas enter, y empieza a compilar!



Suele tirar unas advertencias, sobre que falta un .dll, pero no hay de que preocuparse, por que el mismo pyinstaller los crea.

Ahora si  nos fijamos, en la carpeta o donde sea donde estaba tu programa en .py, se crean 3 carpetas y 1 archivo


Por ahora nos interesaremos en la carpeta "dist", entramos a ella,
de ahí encontraremos una carpeta, entramos a ella, y veremos muchos archivos.
El que nos interesa ahora es el archivo compilado, tiene el nombre del archivo en .py que compilaste,



Simplemente le damos clic y ahí esta! Nuestro programa en .exe!




4 - Extras
-Poner icono al .exe

Si de casualidad quieren que su .exe tenga un icono personalizado, se hace lo siguiente:

Ojo! el icono tiene que estar en formato .ico

En mi caso, cree esta belleza del arte en GIMP xD



Ahora vamos a cmd y escribimos:
Código (bash) [Seleccionar]
pyinstaller nombre_de_nuestro_programa.py -i nuestroicono.ico

De ahí crea el .exe con el icono que hemos hecho!

-Si mi programa tiene interfaz gráfica y no depende de la consola, como elimino la consola?

Es sencillo, hace lo siguiente:
Código (bash) [Seleccionar]
pyinstaller nombre_de_nuestro_programa.py --noconsole
y listo.

-Dar una mejor "presentación" al programa

Cuando tengamos nuestro programa compilado, se crean 3 carpetas y 1 archivo, como dije anteriormente,
creamos una carpeta con el nombre que queramos, de ahí arrastramos todos esos archivos creados.
Ahora entramos a la carpeta que creamos y creamos otra carpeta, con el nombre que quieran,
pero recomiendo que le pongan algo como "archivos del programa" etc.

Ahora arrastramos los archivos a la carpeta que creamos
Entramos a la carpeta,de ahí a dist y buscamos nuestro .exe, le damos doble clic y creamos una acceso directo,
ese acceso directo lo arrastramos a la primera carpeta que creamos, le podemos cambiar el nombre a el acceso directo.












Muchas gracias por leer, si tienes una duda, algo no ha funcionado, etc, no dudes en comentar.
Gracias  ;)

Si les gusto o les funciono esto, por favor pongan este tema en sus marcadores, ya que quisas se pierda en todos los temas...




Editado:
Si están en una distro de Linux, pueden probar el py2exe de el usuario Sentex
Cita de: Sentex en 29 Septiembre 2017, 18:23 PM
Para los que trabajéis en linux como yo xd aquí  tenéis la solución!

www.github.com/MrSentex/py2exe/

No es el py2exe normal y corriente es que me quede sin ideas XD.

Aca está la página del py2exe creado por Sentex.




MOD: Imágenes adaptadas a lo permitido.
Ok. Pero si no tengo idea como adaptarlas! No es mi culpa, y si las adaptaba se les bajaba la resolución
#54
Lo sé, el código es un horror...
Ah, y al depurarlo se saltaba ese if de la linea 39, pero tampoco se ejecutaba el else, asi que me da a saber que hay algo mal ahi, quisas sea el if de la linea 36.
pero si yo pongo esto parte:
Código (python) [Seleccionar]

putslnFunction = linea.split('"')

            if putslnFunction[1] == varValue[1] :
                print(varValue[1]) # envez de imprimirme el valor de la variable, me imprime el nombre de la variable!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

            elif putslnFunction[1] == '':
                print("is null!")
             
            else:
                pass

dentro del
Código (python) [Seleccionar]
elif "putsln" in linea:
me tira que la variable varValue y varName no están declaradas, cuando si lo están.
#55
Hola, primero de todo, tengo que explicar de que se trata este código, es una especie de interprete, para un lenguaje de programación (?) que cree yo (ver este tema mio, [Python 3.6] Un intento de no se que... para más información)
Acá el código:
Código (python) [Seleccionar]

import os

filepath = "C:/Users/darling/Desktop/prueba2.ocl" # input("Ruta del archivo: ")

archivo = open(filepath, "r", encoding = 'utf-8') # Abre el archivo con codificado UTF-8

for linea in archivo.readlines():

    if "add" in linea: # "add" Indica que los proximos numeros que esten entre comillas simples seran sumados
        arreglo = linea.split('"')
        arreglo2 = linea.split('"')
           
        # print(arreglo[1])
        # print(arreglo2[1])

        num1 = arreglo[1]
        num2 = arreglo2[1]

        int(num1)
        int(num2)
   
        total = float(num1) + float(num2)
        print(total)

    elif "$$" in linea: # $$ Indica que hay un comentario
        pass

    elif "clrscr()" in linea: # clrscr() indica en el código que se ha de limpiar la pantalla
        os.system('cls')
 
    elif "int" in linea: # "int" Indica que es una variable de tipo entero
        varName = linea.split('"') # Nombre de la variable
        varValue = linea.split('|') # Valor de la variable
       
       
        if "putsln" in linea:
            putslnFunction = linea.split('"')

            if putslnFunction[1] == varValue[1] :
                print(varValue[1]) # envez de imprimirme el valor de la variable, me imprime el nombre de la variable!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

            elif putslnFunction[1] == '':
                print("is null!")
       

        # print(varName[1])
        # print(varValue[1])

    elif "putsln" in linea:
        putslnFunction = linea.split('"') # putsln Indica que se imprimira un texto
        printedText = putslnFunction[1]
   
        '''
        if printedText == '':
            print(printedtext)
        else:
            print(printedText) # Imprime el texto que se ha introducido en la función putsln. Ejemplo: putsln "Hola!"
        '''

        print(printedText) # Imprime el texto que se ha introducido en la función putsln. Ejemplo: putsln "Hola!"

archivo.close()

print("Code execution finished.")
os.system('pause')



Bueno, como aparece en el código (línea 40), envés de darme el valor de la variable, me da el nombre, he intentado de todo y no lo logro hacer funcionar.  :-(
Gracias.  :)
#56
Ingenioso, buen aporte :)
Citar
4. En caso de no entender nada de los pasos a seguir
              Vayase a la mierrrrr...da
mmm, ya estamos advertidos...
#57
Código (python) [Seleccionar]

import os

filepath = input("Ruta del archivo: ")

archivo = open(filepath, "r", encoding = 'utf-8') # Abre el archivo con codificado UTF-8

for linea in archivo.readlines():

   if "add" in linea: # "add" Indica que los proximos numeros que esten entre comillas simples seran sumados
       arreglo = linea.split('"')
       arreglo2 = linea.split('"')
           
       # print(arreglo[1])
       # print(arreglo2[1])

       num1 = arreglo[1]
       num2 = arreglo2[1]

       int(num1)
       int(num2)
   
       total = float(num1) + float(num2)
       print(total)

   elif "$$" in linea: # $$ Indica que hay un comentario
       pass

   elif "clrscr()" in linea:
       os.system('cls')
 
   elif "int" in linea: # "int" Indica que es una variable de tipo entero
       varName = linea.split('"') # Nombre de la variable
       varValue = linea.split('|') # Valor de la variable
       
       
       if "putslnvar" in linea:
           putslnvarFunction = linea.split('"')

           if putslnvarFunction[1] == varValue[1] :
               print(varValue[1]) # envez de imprimirme el valor de la variable, que en este caso es 8, me imprime el nombre de la variable!!!!!!!!!!!!!!!!!!

           elif putslnvarFunction[1] == '':
               print("is null!")
     

       # print(varName[1])
       # print(varValue[1])

   elif "putsln" in linea:
       putslnFunction = linea.split('"') # putsln Indica que se imprimira un texto
       printedText = putslnFunction[1]
   
       '''
       if printedText == '':
           print(printedtext)
       else:
           print(printedText) # Imprime el texto que se ha introducido en la función putsln. Ejemplo: putsln "Hola!"
       '''

       print(printedText) # Imprime el texto que se ha introducido en la función putsln. Ejemplo: putsln "Hola!"

archivo.close()

print("Code execution finished.")
os.system('pause')


Ya me aburrí, no lo logro hacer funcionar. :-(
Si alguien sabe, puede tomar el código y arreglarlo, si quieren.
#58
Muchas gracias  :)
#59
Yo por suerte tengo fibra!
...pero me va a la misma velocidad que mi ADSL anterior :-(
ah, y acá en Chile decimos "mejor prevenir que lamentar"
#60
Deberían concentrarse también en el consumo de RAM, Firefox consume aveces 120MB de RAM, que es mucho para mi computadora de 2GB de RAM  :-(