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.
I would be grateful for any assistance. Thank you.
source https://stackoverflow.com/questions/75270546/running-pyinstaller-on-code-containing-relative-paths
Comments
Post a Comment