Problem ze zmianą ścieżki dla pliku exe w Pyinstaller

0

Witam,

Mam skrypt, który korzysta z pliku tekstowego przy pomocy funkcji open(). Generalnie w Pycharm wszystko dziala, ale po wygenerowaniu pliku .EXE i przeniesieniu go do lokalizacji sieciowej , uzytkownik który próbuje odpalic tego .EXE'ka dostaje komunikat :

FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\blablabla\\PycharmPorjects\\project\\config\\plik.txt'` # który to odwoluje sie do mojego zasobu ( do którego nie ma dostepu).

to w jaki sposób otwieram plik:

try:
    with open(r"C:\Users\blablabla\PycharmPorjects\project\config\plik.txt", 'r') as configFile: # tu jest problem, a ja nie wiem jak to zmienić :(
        printerName = configFile.readlines()
        configFile.close()
except FileNotFoundError as err:
    print("Brak pliku drukarek")

Oczywiscie kombinowalem juz ze SO, ale przyznam szczerze , ze nie za bardzo wiem pod jaka fraza tego szukac :/ brakuje mi slowa (mam zacme).

Moje pytanie: Jak posluzyc sie pyinstallerem zeby utworzyc ten plik maksymalnie przenosnym + chce zeby plik tekstowy byl mozliwy do edycji, bez koniecznosci re-kompilacji projektu. To nie moze byc az tak trudne :P

Rozwazam utworzenie pliku konfiguracyjnego, zeby program sobie go parsowal, ale na razie musze wiedziec jak zrobic zeby .exe wiedzial sam, gdzie znajduje sie plik tekstowy.

PLATFORMA: WINDOWS 10
IDE: PYCHARM 64-BIT
PROGRAM DO EXE: PYINSTALLER

0

Musisz odwoływać się do ścieżki relatywnej, a nie do bezwzględnej. Jeżeli podasz po prostu nazwę pliku bez ścieżki to interpreter będzie szukał pliku tam skąd go wywołujesz.

0

Hej, dzięki za odpowiedz.

Nie rozumiem tylko jednego... czy ścieżka powinna być umieszczona z "palca" w funkcji open(), czy powinienem wykorzystać do tego biblioteki sys i os..? i jaką ścieżkę wbija pyinstaller do pliku exe .. próbowałem wielu metod ze stackoverflow, na razie ani jedna nie działa ..:/

struktura katalogu (własnoręcznie robiona teraz xD)(

project/
    |--------- main.py
    |
    |---------app(pusty katalog)
    |
    |---------Config/
    |            |------- printer.txt
    |---------Module/
    |            |------- GetData.py
    |            |------- RequestPrinterModule.py
    

Generalnie chce żeby ten plik był konfigurowalny

Tak nawiasem mówiąc , internet jest pełny shit-contentu.. miliard filmów na YT o tym jak tworzyć plik exe z jednego pliku .. :/


#  main.py
file = "../printers" # "..\printers" tez próbowałem 

try:
    print(file)
    with open(file, 'r') as configFile:
        printerName = configFile.readlines()
except FileNotFoundError as err:
    print("Brak pliku drukarek")


C:\Users\user\PycharmProjects\DCPL_PrintersNOENV\dist\main>main.exe
..\config\printers
Brak pliku drukarek
                        ++++++++++++++++++++++++ MENU +++++++++++++++++++++++++
Traceback (most recent call last):
  File "main.py", line 51, in <module>
  File "main.py", line 39, in dsp_menu
NameError: name 'printerName' is not defined
[2116] Failed to execute script main


Problem rozwiązany. Okazało się, że pyinstaller konfiguruje projekt poprawnie, ale nie dołącza pliku "printer" do katalogu z plikiem .exe, więc skopiowałem go do katalogu z .exe i działa poprawnie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1