Incorrect docs for `-i` flag and `PYTHONSTARTUP`
還沒有人認領這個 Issue。
- 主要語言
- Python
- 星號
- 77.2k
- 分支
- 36k
- PR 合併指標
- PR 指標待擷取
描述
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
貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
研究方向
該 issue 將 -i 和 PYTHONSTARTUP 的文件確定為切入點;首先搭配示範的命令檢查相關措辭。完成標準是文件區分 -i 的兩種用法,並說明何時會略過 PYTHONSTARTUP,同時範例仍然正確。
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- python
- 領域
- documentation
- Issue 類型
- 文件
- 難度
- 2/5
- 預估耗時
- 1-3 小時
- 活躍度
- 停滯
- 描述清晰度
- 描述清楚
- 新手友好度
- 25/100