0

I have a large Python codebase developed inside PyCharm. I want to use PyInstaller for obvious reasons; however, I'm struggling with relative paths for data files due to the project code file hierarchy.

The file hierarchy was a usual top-down structure, i.e., the point of execution is within a file found in the project root folder, with the additional Python files stored in a sensible folder, (please pay particular attention to the version.txt file on the same level as the Main.py file) e.g.,

Project/
--Main.py
--version.txt
--Engines/
----somefile.py
--Controllers/
----somefile.py
--Entities/
----somefile.py

A year ago, I built a GUI front end whilst maintaining the console-based point of execution. The GUI point of execution is within MainGUI.py. But that file is not at the project root. It looks a bit like this:

Project/
--Main.py
--version.txt
--GUI/
----MainGUI.py
--Engines/
----somefile.py
--Controllers/
----somefile.py
--Entities/
----somefile.py

Inside MainGUI.py, I have the code to open the "../version.txt" file:

with open("../version.txt") as file:
    version = file.readline().strip()

I navigate to the Project/GUI folder in the PyCharm Terminal and execute pyinstaller MainGUI.py --onefile It seems to work until I try and execute the built MainGUI.exe. I'm given the error:

Traceback (most recent call last):
  File "MainGUI.py", line 10, in <module>
FileNotFoundError: [Errno 2] No such file or directory: '../version.txt'
[17232] Failed to execute script 'MainGUI' due to unhandled exception!

I could move the version.txt file to be on the same level as MainGUI.py, but this was a reduced example. There are lots of data files referenced using relative paths.

halfer
  • 19,824
  • 17
  • 99
  • 186
Anthony Nash
  • 834
  • 1
  • 9
  • 26
  • you need to use paths relative to the .py file instead of relative to the current working directory. – Alexander Jan 29 '23 at 02:14
  • Thank you for this information, put please give an example.Do you mean as part of the pyinstaller script, or on the command line, or in the python code? You might understand your answer, but I don't. Thank you. – Anthony Nash Jan 29 '23 at 11:03
  • Does [this](https://stackoverflow.com/questions/60937345/how-to-set-up-relative-paths-to-make-a-portable-exe-build-in-pyinstaller-with-p/60945435#60945435) answer help at all? – wstk Feb 13 '23 at 12:02
  • Sorry, I will look into it. This is still required, I'm just struggling with my work load at the moment. – Anthony Nash Mar 11 '23 at 11:49

0 Answers0