Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

691
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!