• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Python - ścieżka do katalogu aktualnego skryptu

0 głosów
56 wizyt
pytanie zadane 2 lutego w Python, Django przez Kuba Jakubowski Bywalec (2,970 p.)

Jak otrzymać ścieżkę do katalogu aktualnie wykonywanego skryptu. Dotychczas używałem tego:

os.path.dirname(__file__)

Jednak kiedy uruchomię mój skrypt innym skryptem używając np. os.startfile. Otrzymuję błędną ścieżkę. Zależy mi na rozwiązaniu który będzie działało zarówno przy plikach .py oraz .exe "zfreezowanych" przez PyInstaller'a z użyciem atrybutu --onefile.

komentarz 2 lutego przez Secrus Nałogowiec (26,820 p.)
a może działanie skryptu który próbujesz wywołać zamknąć w funkcji i zaimportować do skryptu wywołującego?

1 odpowiedź

+1 głos
odpowiedź 2 lutego przez Arkadiusz Sikorski Pasjonat (19,160 p.)
os.path.abspath(__file__) 
os.path.dirname(os.path.abspath(__file__)) 

Pierwsze zwraca ścieżkę absolutną pliku, drugie - ścieżkę absolutną folderu zawierającego obecny plik.

komentarz 2 lutego przez Kuba Jakubowski Bywalec (2,970 p.)
edycja 3 lutego przez Kuba Jakubowski

Dzięki, działa

komentarz 2 lutego przez Kuba Jakubowski Bywalec (2,970 p.)
Wróć, jednak nie działa. Nadal przy otwieraniu "zfreezowanego" exe'ca innym skryptem jest pokazywana ścieżka do skryptu, a nie do exe'ca.
1
komentarz 3 lutego przez Arkadiusz Sikorski Pasjonat (19,160 p.)

Jeśli używasz pyinstallera, to może zobacz tutaj.

komentarz 3 lutego przez Kuba Jakubowski Bywalec (2,970 p.)

Znalazłem rozwiązanie:

import sys, os

if getattr(sys, 'frozen', False):
    dir = os.path.dirname(sys.executable)
else:
    dir = os.path.dirname(__file__)

Sprawdzamy czy program jest zamrożony, jeśli tak bierzemy folder z sys.executable, w przeciwnym razie aktualny folder wyciągamy z __file__.

1
komentarz 4 lutego przez Arkadiusz Sikorski Pasjonat (19,160 p.)
Nie ma za co :)

Podobne pytania

0 głosów
2 odpowiedzi 92 wizyt
pytanie zadane 10 grudnia 2018 w Python, Django przez Milesq Stary wyjadacz (13,760 p.)
0 głosów
0 odpowiedzi 40 wizyt
0 głosów
1 odpowiedź 59 wizyt
pytanie zadane 14 kwietnia 2017 w Python, Django przez TheFunny Gaduła (3,270 p.)
Porady nie od parady
Zadając pytanie postaraj się o szczegółowe opisanie problemu oraz udostępnienie wszystkich istotnych informacji (kody źródłowe, zrzuty ekranu itp.).Opisanie problemu

62,400 zapytań

108,542 odpowiedzi

226,582 komentarzy

35,742 pasjonatów

Przeglądających: 220
Pasjonatów: 14 Gości: 206

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...