PyCharm irgendwie verstellt

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
benjamin222
User
Beiträge: 6
Registriert: Donnerstag 15. Juli 2021, 16:01

Hallo,

heute ist mir folgendes aufgefallen: Wenn ich in PyCharm ein Projekt mit mehreren Python Files habe und eines davon ausführe dann werden zuerst alle Files ausgeführt die open als import angegeben wurden. Das will ich nicht natürlich nicht haben. Eine google Suche führte mich dann zu den "Run configurations", aber ich verstehe nicht, was da falsch gesetzt ist.
Zwei Python Files, mit denen ich das reproduzieren kann:

file1:

Code: Alles auswählen

from file2 import a
print('b')

und file2:

Code: Alles auswählen

print('zuerst')

def a():
    pass
Führe ich die obere aus, erscheint auf meinem Bilschirm aber zuerst "zuerst" obwohl ich das gar nicht sehen will.
Benutzeravatar
Dennis89
User
Beiträge: 1153
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

das liegt nicht an PyCharm. Wenn du ein Modul importierst wird es abgearbeitet. Siehe:
https://wiki.pythonde.pysv.org/Import

Man schreibt ja auf Modulebene nur Code, der Konstanten, Funktionen oder Klassen definiert, damit und mit den Hinweisen aus dem Link sollte dein Problem dann erledigt sein.


Grüße
Dennis

Edit:
File1:

Code: Alles auswählen

from file2 import a

def main():
    print('b')
    a()

if __name__ == '__main__':
    main()
File2:

Code: Alles auswählen

def a():
    print('Jetzt kommt a')

def main():
    print('zuerst')

if __name__ == '__main__':
    main()
Führe die Dateien mal beide aus.
Zuletzt geändert von Dennis89 am Samstag 31. Juli 2021, 10:58, insgesamt 1-mal geändert.
"When I got the music, I got a place to go" [Rancid, 1993]
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Wenn Du es nicht sehen willst, darfst Du es nicht schreiben. Module müssen nebenwirkungsfrei importierbar sein, also nur aus Funktionsdefinitionen, Klassen, Konstanten, etc. bestehen.
Antworten