python / python/cpython

Incorrect docs for `-i` flag and `PYTHONSTARTUP`

Offen
#142,474 5 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

docs topic-repl
Vorherrschende Sprache
Python
Sterne
77.2k
Forks
35.9k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Documentation

The docs for the -i flag state that "Interactive mode will start even when sys.stdin does not appear to be a terminal. The PYTHONSTARTUP flie is not read". This is incorrect, as can be shown by this test:

% echo "print('running pystartup')" > startup.py
% PYTHONSTARTUP=startup.py python3 -i < /dev/null
Python 3.13.2 (main, Feb  4 2025, 14:51:09) [Clang 16.0.0 (clang-1600.0.26.6)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
running pystartup
>>>

The behavior is the same in all versions of python I have installed (3.10, 3.11, 3.12, 3.13) on macOS, so it's not something that changed with the new REPL implementation.

Note that PYTHONSTARTUP is not used if the -c flag is also used.

% PYTHONSTARTUP=startup.py python3.10 -i -c "print('-c')" < /dev/null
-c
>>> 

I think what I'm seeing here is that the -i flag has two distinct uses:

  • Run a script or command and go into interactive mode. PYTHONSTARTUP is not used in this case.
  • Run in interactive mode even when sys.stdin does not appear to be a terminal. This only changes the terminal check, so PYTHONSTARTUP is run as usual, contrary to the documentation.

If that's right, then I think the docs should be updated to describe these two aspects of the flag separately and point out that PYTHONSTARTUP is only disabled in the execute-and-interactive case.

(How did I discover this? I have test cases that run python -u -i to interact with an interpreter on stdin/stdout. vscode recently started injecting a PYTHONSTARTUP file that changes sys.ps1 in ways that broke my test. What I really want is to add the -I flag to these tests for isolated mode, but along the way I came across this incorrect statement in the docs)

Linked PRs
  • gh-142502

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Das Issue identifiziert die Dokumentation zu -i und PYTHONSTARTUP als Ausgangspunkt; prüfe zunächst diese Formulierung zusammen mit den gezeigten Befehlen. Die Aufgabe ist abgeschlossen, wenn die Dokumentation die beiden Verwendungen von -i unterscheidet und angibt, wann PYTHONSTARTUP übersprungen wird, wobei die Beispiele weiterhin korrekt sind.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
documentation
Issue-Typ
Dokumentation
Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.