es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El ejecutable de un código Python funcional genera el error “No se pudo abrir [DIRECTORIO], no existe tal archivo o directorio”.

P.D. Soy un programador novato, ni siquiera uso Python en ninguno de mis trabajos, sin embargo, se me requiere crear este código independientemente de si quiero hacerlo o no, aparentemente ofendí a algunos en mi último mensaje debido a lo absolutamente terrible que era, si esto te sucede con este mensaje, aquí tienes mi disculpa, lo siento. Sigamos…

La parte del código donde surge el problema es la siguiente:

window_layout

path = directorio + '/unknown.png' 
layout = [[sg.Button("Navegar")], [sg.Text("Detector de Caras")], [sg.Image(filename=path)]]

Como dije, el código funciona bien en Python, pero cuando creo un ejecutable, me da un error que indica “Tu ventana tiene un elemento de imagen con un problema” y dice en otra parte de la ventana “No se pudo abrir ‘C:\users\USER\AppData\Local\Temp_ME1227922/unknown.png’: no existe tal archivo o directorio”.

Mientras creo el ejecutable, esto es lo que escribo:

pyinstaller Reconocimiento.py --onefile -w

Error que aparece al iniciar el archivo .exe:
Error apareciendo al iniciar el archivo .exe

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema con el código y el ejecutable es que la ruta de la imagen se está referenciando de forma relativa al directorio de trabajo actual desde donde se está ejecutando el ejecutable. Cuando empacamos el código en un ejecutable utilizando PyInstaller, el directorio de trabajo cambia y, por lo tanto, la ruta relativa de la imagen ya no es válida.

    Para solucionar este problema, necesitamos utilizar una ruta absoluta hacia la imagen, que no cambiará independientemente del directorio de trabajo. Una forma de hacer esto es utilizar el módulo os para obtener la ruta absoluta del directorio donde se encuentra el script, y luego agregar el nombre del archivo de imagen. El código modificado se vería así:

    import os
    
    # window_layout
    script_dir = os.path.dirname(os.path.abspath(__file__))
    path = os.path.join(script_dir, 'unknown.png')
    layout = [[sg.Button("Browse")], [sg.Text("Face Detector")], [sg.Image(filename=path)]]
    

    Con estos cambios, el ejecutable debería poder encontrar el archivo de imagen independientemente del directorio de trabajo actual.

Comments are closed.