Hallo zusammen,
ich habe ein Problem mit symbolischen Links in meinem Projektordner-Pfad.
Bisher hatte ich mein Projekte unter /home/me/Projekte liegen.
Da ich aktuell gelegentlich das System wechsle (ubuntu und Manjaro, jeweils mit KDE) habe ich das Projektverzeichnis jetzt unter /home/Projekte (der auch mir gehört) angelegt und verweise per Symlink von /home/me/Projekte auf /home/Projekte. Dadurch kann ich von beiden Systemen wie gewohnt und transparent auf die Projekte zugreifen.
Das funktioniert im Prinzip auch wie erwartet, bis auf eine Ausnahme.
Nun will ich ein Programm mit PyCharm debuggen, das z.B. in /home/Projekte/p1 liegt.
Wenn nun aus /home/Projekte/p1/main.py eine Funktion aufgerufen wird die sich z.B. in /home/Projekte/p1/foo.py liegt dann öffnet die IDE bei einem Haltepunkt nicht etwa den Symlink /home/Projekte/p1/main.py, sondern den realen Pfad /home/Projekte/p1/foo.py.
Technisch funktioniert das auch. Nur, wenn ich nun in dieser Datei etwas ändern will meint PyCharm, dass diese Datei nicht Teil des Projekts wäre, und ich muss das explizit erlauben.
Gibt es einen Weg, das zu verhindern?
Natürlich könnte ich auch einfach das Projekt in seinem "echten" Pfad öffnen, Aber das finde ich recht mühsam. Der Pfad ist nicht ganz so simpel wie hier dargestellt, sondern relativ verschachtelt. Und wenn ich nicht mit Links arbeiten kann ist das eine unangenehme Klickerei.
Im Dateimanager usw. bemerke ich ja gar nichts von "Umleitungen" durch Symlinks. Warum ist das bei Python anders?
Verhalten von Symlinks
- __blackjack__
- User
- Beiträge: 13999
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@pythoneer2025: Ist das bei Python denn anders? Das was Du beschreibst ist ja verhalten der IDE und nicht verhalten von Python.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
- DeaD_EyE
- User
- Beiträge: 1221
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Ja, hat mit Python nichts zu tun.
Um Symlinks zu folgen, musst du extra eine Methode aufrufen, dann wird der Pfad aufgelöst:
Verweist bei den meisten Distributionen auf /usr/bin. Das ist noch ein Relikt aus alten Zeiten und wenig Speicherplatz.
Um Symlinks zu folgen, musst du extra eine Methode aufrufen, dann wird der Pfad aufgelöst:
Code: Alles auswählen
Path("/bin").resolve()
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
-
- User
- Beiträge: 8
- Registriert: Dienstag 14. Januar 2025, 13:34
Oh, in der Tat. Die IDE "lügt" mich an.__blackjack__ hat geschrieben: Dienstag 14. Januar 2025, 15:37 @pythoneer2025: Ist das bei Python denn anders? Das was Du beschreibst ist ja verhalten der IDE und nicht verhalten von Python.
Ich habe mal testhalber folgende Zeilen in main.py und einer unit globals.py eingebaut, die von main aufgerufen wird:
Code: Alles auswählen
print("cwd: ", os.getcwd())
print("__file__ path: ", __file__)
aus main.py:
Code: Alles auswählen
cwd: /home/Projekte/p1 (sic!)
__file__ path: /home/me/Projekte/p1/main.py
Code: Alles auswählen
cwd: /home/Projekte/p1
__file__ path: /home/Projekte/p1/Globals.py
Code: Alles auswählen
cwd: /home/Projekte/p1
__file__ path: /home/Projekte/p1/main.py (bzw. globals.py)

Vielen Dank für deine Hilfe.