Hi,

So as you've probably worked out, it's the following line that needs to
change:

imagenRetro = PhotoImage(file="./Imagen/Retroceder.png") #llama y carga la
imagen

This filename is relative to the current working directory which means that
it will break even in normal Python if you run from a different folder. You
want to be able to run your code from any folder before you start using
PyInstaller. i.e. All of the following should all work without any issues:

python Aplicacion_Calculadora.py

cd ..
python folder/Aplicacion_Calculadora.py

cd somewhere/random/on/your/machine
python /full/path/to/Aplicacion_Calculadora.py

To fix this *not in PyInstaller* you normally use the __file__ variable.
Something allong the lines of:

from os import path

script_folder = path.abspath(path.dirname(__file__))

imagenRetro=PhotoImage(file=path.join(script_folder, "Imagen/Retroceder.png"
))#llama y carga la imagen

But __file__ is strange inside PyInstaller so PyInstaller has its own
mechanism for getting the folder your code is in. It's documented here
<https://pyinstaller.readthedocs.io/en/stable/runtime-information.html#using-file>.
Your code would look like:

from os import path

import sys

bundle_dir = getattr(sys, '_MEIPASS', path.abspath(path.dirname(__file__)))

imagenRetro=PhotoImage(file=path.join(bundle_dir,
"Imagen/Retroceder.png"))#llama y carga la imagen

This fixed it on my machine.

Brénainn

P.S. Thanks for including you code - it makes this so much easier.

On Sat, 2 May 2020 at 11:15, Hugo Benavides <[email protected]> wrote:

> hi,
> I'm a beginner student in Python and PyInstaller but after go accros new
> and differrent instructions, I've gotten a problem creating an executable
> using the command pyinstaller at the time of use the helper --onefile
>
> I've created an executable using the next instruction:
>
>           pyinstaller --add-data "Rute PC to my Folder\Imagen";"Imagen"
> Aplicacion_Calculadora.py
>
> The folder Imagen has an imagen that is called into the code and at this
> time everything works fine, the executable starts and works very fine. I
> 've used the app and operations are correct and the imagen is upload in the
> interface, but I deleted everything and started again.
>
> I would like to add everything in one File using the command:
>
>           pyinstaller --onefile --add-data "Rute PC to mi
> Folder\Imagen";"Imagen"  Aplicacion_Calculadora.py
>
> At this point, the executable never starts. I saw the message in console
> when the .exe is running and it shows me the next error:
>
>           File "tkinter\__init__.py", line 4061, in __init__
>           File "tkinter\__init__.py", line 4006, in __init__
>           _tkinter.TclError: couldn't open "./Imagen/Retroceder.png": no
> such file or directory [11320] Failed to execute script
> Aplicacion_Calculadora
>
> The executable never can find the folder with the imagen, it happenning
> just when I use the command --onefile
>
> I've been looking in many documentation and instructions but I've not
> found anything about that error just using the command --onefile
>
>
> May you help me with that error or what instruction I should add, please?
>
> Attach code and folder with the imagen
>
>
> Thanks
>
> Python installed 3.8
> pyinstaller executed
>
> --
> You received this message because you are subscribed to the Google Groups
> "PyInstaller" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/pyinstaller/1519a9c8-cc73-425c-875c-b02fa5b07619%40googlegroups.com
> <https://groups.google.com/d/msgid/pyinstaller/1519a9c8-cc73-425c-875c-b02fa5b07619%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"PyInstaller" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pyinstaller/CAFLMo58oNqru9TgQgM6FyLJfM6vSe99S0jNULYXt-xS%2BY9u0cg%40mail.gmail.com.

Reply via email to