Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

699
Vistas
¿Cuál es el equivalente de add-data (Pyinstaller) para Nuitka?

Estoy tratando de compilar un archivo python con Nuitka en lugar de Pyinstaller. Todo va muy bien excepto por el hecho de que no entiendo cómo debo agregar otro archivo de datos al archivo de python.

El problema

Si quiero agregar una imagen a mi archivo python en Pyinstaller (en Windows), haría lo siguiente:

 wine /root/.wine/drive_c/Python27/pyinstaller.exe --add-data "/root/Downloads/car.jpg;." --onefile --noconsole --icon /root/Downloads/icon.ico pythonfile.py

Ahora, si abriera este archivo exe, ejecutaría el archivo python y abriría el archivo car.jpg.

Quiero hacer algo similar usando Nuitka. Cuando miré la documentación de Nuitka, vi que probablemente necesitaba usar el --include-data-file=<source>=<target> .

Intenté esto y no dio errores, pero cuando abro el archivo exe creado, no abre el archivo dado. Todos los demás argumentos funcionaron como quería, por lo que solo el argumento --include-data-file no da el resultado deseado

Este es el comando Nuitka que probé:

 .\python.exe -m nuitka --mingw64 .\pythonprogram.py --standalone --onefile --windows-icon-from-ico=pdf.ico --windows-disable-console --include-data-file=C:\Users\User\AppData\Local\Programs\Python\Python39\*.pdf=mypdf.pdf

Mis preguntas):

  • ¿Estoy usando el argumento correcto?
  • ¿Es esto posible con Nuitka?
  • ¿Cómo solucionaría mi problema?

¡Gracias por adelantado!

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

En primer lugar, cuando encuentre un comportamiento inesperado en Nuitka (en este caso, esperaría que se abriera un archivo, lo cual no sucedió) recomiendo eliminar el --windows-disable-console y observar la salida del terminal; sin él, la depuración del programa compilado es prácticamente imposible. También puede obtener mucha información analizando la salida de Nuitka durante la transpilación y la compilación (por ejemplo, puede aparecer una advertencia informándole sobre la inclusión del complemento de numpy para agregar soporte para el módulo numpy).

Ahora, pasando a tus preguntas:

  • ¿Estoy usando el argumento correcto?

Sí, el argumento --include-data-file=<source>=<target> es correcto si lo que desea es incrustar un archivo.

Sin embargo, lo que es muy importante cuando se trata de programas compilados con el argumento --onefile es cómo se cargan los archivos internamente , en los archivos .py.

Siento que lo mejor que puedo hacer es mostrar un ejemplo propio (estoy usando pygame para mi proyecto, pero esta forma de cargar archivos debería funcionar en cualquier circunstancia):

 import os import pygame def load_file(file_name: str) -> str: return os.path.join(os.path.dirname(__file__), file_name) image_1_sprite = pygame.image.load(load_file("textures/image_1.png"))

Entonces usaría Nuitka como tal: python -m nuitka --onefile --include-data-dir=../workingdir/textures=textures main.py o, si desea incluir solo un archivo, python -m nuitka --onefile --include-data-file=../workingdir/textures/image_1.png=textures/image_1.png main.py , donde workingdir es el directorio en el que reside main.py (recomiendo usar rutas relativas para hacer el repositorio portátil, porque si alguien descargara su código fuente y lo guardara, por ejemplo, en el disco duro D:\, el comando ejecutado fallaría).

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda