Seite 1 von 1

Verlassen des Interpreters

Verfasst: Donnerstag 9. Juni 2022, 16:41
von anhu42
Hallo zusammen,

auf meinem Linux-System kann ich den Interpreter mit exit() oder quit() verlassen. Bei Windows geht das nicht. Ich habe es mit Version 3.7.4 und 3.9.13 getestet. Da muss ich Strg+Z und anschließend Return drücken. Die Fehlermeldung bei der Eingabe von exit() lautet:

name 'exit' is not defined

Was mich dabei irritiert ist die Tatsache, dass bei einer Google-Suche bei den Treffern, die ich mir angeschaut habe, das Verlassen mit exit() immer funktionieren sollte. Irgendwie ist dieses Verhalten nicht einmal gut dokumentiert. Und diese Verhalten macht auch für mich keinen Sinn.
Hat jemand eine Idee oder ist meine Frage "zu akademisch"?

Viele Grüße,
Andreas

Re: Verlassen des Interpreters

Verfasst: Donnerstag 9. Juni 2022, 19:16
von sparrow
Den interaktiven Intepreter kann man auch unter Windows mit quit() verlassen.
Die Funktion ist ausschließlich dafür gedacht. Für das Beenden von Programmen soll man das Programm zu seinem natürlichen Ende kommen lassen oder (wenn man einen Exit-Code mitgeben möchte) sys.exit() verwenden.

Re: Verlassen des Interpreters

Verfasst: Donnerstag 9. Juni 2022, 19:47
von narpfel
`quit` und `exit` werden in `site.py` gesetzt, wenn Python nicht mit `-S`gestartet wird. Was sagt denn `import site; print(site)` unter Windows? Sind die verlinkten Zeilen da enthalten? Und was steht in `sys.flags.no_site`?

Re: Verlassen des Interpreters

Verfasst: Freitag 10. Juni 2022, 06:09
von anhu42
Hallo,
quit() funktioniert nicht, exit () funktioniert erst nach import sys , wenn man sys.exit() eingibt. sys.quit() funktioniert nie.
import site print (site)
ergibt
<module 'site' from 'C:\\temp\\python\\python37.zip\\site.pyc>
'sys.flags.no_site'
hat den Wert 1.

Mein Tutorial habe ich etwa zu 25% durchgearbeitet. Ich denke, dass ich noch einiges zu lernen habe.

Re: Verlassen des Interpreters

Verfasst: Freitag 10. Juni 2022, 08:44
von __blackjack__
@anhu42: Da ist jetzt die Frage warum `sys.flags.no_site` diesen Wert hat, denn das ist nicht normal:

Code: Alles auswählen

In [159]: import sys                                                            

In [160]: sys.flags.no_site                                                     
Out[160]: 0

In [161]: sys.flags.no_user_site                                                
Out[161]: 0
Wie startest Du den Interpreter denn? Wenn da eine Option ``-S`` dabei ist: die wäre Schuld. Und dann wäre die Frage warum die für den Aufruf verwendet wird.

Das `sys.quit()` nicht funktioniert ist klar, die Funktion gibt es nicht.

Re: Verlassen des Interpreters

Verfasst: Samstag 11. Juni 2022, 05:39
von snafu
anhu42 hat geschrieben: Freitag 10. Juni 2022, 06:09 import site print (site)
ergibt
<module 'site' from 'C:\\temp\\python\\python37.zip\\site.pyc>
Und dieser Pfad ist auch ungewöhnlich. Hast du Python gar nicht installiert, sondern irgendwie nur aus dem Archiv extrahiert? Aus welcher Quelle hast du es bezogen? Läuft das innerhalb einer Entwicklungsumgebung oder startest du es direkt von der Kommandozeile (cmd.exe)?

Re: Verlassen des Interpreters

Verfasst: Samstag 11. Juni 2022, 11:50
von DeaD_EyE
Vielleicht ist diese Version über den Windows-App-Store installiert worden.

Jedenfalls habe ich mal meine Win10-VM gestartet und folgenden Code mit Python 3.10, 3.9, 3.7 getestet:

Code: Alles auswählen

exit(1)
Bei den getesteten Versionen gab es keine Exception.

Code: Alles auswählen

py -3.10 test.py
py -3.9 test.py
py -3.7 test.py
Python aus dem Windows-App-Store habe ich nicht getestet, da man sich dann bei MS anmelden muss.

Re: Verlassen des Interpreters

Verfasst: Mittwoch 15. Juni 2022, 21:08
von anhu42
Hallo,

ich habe von python.org die Version "Windows embeddable package" heruntergeladen und alles entpackt. Ich werde es Mal mit einer "richtigen" Installation probieren.
Viele Grüße

Re: Verlassen des Interpreters

Verfasst: Mittwoch 15. Juni 2022, 22:30
von __blackjack__
Ich habe gerade Gewaltfantasien. Wenn man sich die Donwload-Optionen auf Python.org für Windows anschaut, dann sind die beiden „embeddable“-Varianten die beiden ersten in den Listen, und die normalen Installer die beiden letzten. Und keine Erklärung/Warnung/Hinweis, dass normale Nutzer nicht die „embeddable“-Variante wollen, sondern den Installer. Möchte nicht wissen wie viele Leute darauf reinfallen. Insbesondere neue Benutzer. 🤦