无法在 IDLE 中更改 sys.ps1

问题描述

我最近听说您可以通过更改变量 sys.ps1 来更改 Python 中的提示。所以我决定打开 IDLE,然后写一些类似的东西:

>>> import sys
>>> sys.ps1 = ":::"

但是,这创建了一个新变量并且没有任何变化(提示仍然是“>>>”) - 我重新启动了 IDLE 并检查了这个变量是否被 python 读取......不:

>>> sys.ps1
Traceback (most recent call last):
  File "<pyshell#1>",line 1,in <module>
    sys.ps1
AttributeError: module 'sys' has no attribute 'ps1'

那么,如何在python中更改提示? 注意:sys 模块的其他函数/变量已正确读取。

解决方法

指定解释器的主要和次要提示(在这种情况下它们的初始值为 >>> ... )的提示字符串仅在解释器处于 交互式时才定义> 模式和 IDLE 或多或少是 Python 的集成开发环境

Python交互模式: Python interactive mode

sys.ps1 doc

,

请参阅 Python 错误跟踪器上的问题 #13657 "IDLE doesn't recognize resetting sys.ps1"。它于 2011 年开放,但仍未解决(截至撰写本文时)。因此,不能仅仅因为 IDLE 不支持而从 IDLE 的 Python shell 中更改提示。

更新(不到 24 小时后):问题现已关闭。在即将随 Python 3.10 发布的 IDLE 版本中,提示的显示方式将有所不同。请参阅上面空闲开发人员 Terry Jan Reedy 的评论。将来可能会添加更改提示的设置。

在当前和更早的 Python/IDLE 版本中,可以在启动 IDLE 之前自定义提示,但不能在运行它时自定义。您需要一个执行此操作的小启动脚本:

import sys
sys.ps1 = '::: '
import idlelib.idle

您收到该错误消息 (module 'sys' has no attribute 'ps1') 的原因是 IDLE 呈现给您的 Python shell 实际上并未处于“交互”模式。然后才定义 sys.ps1。如果您尝试在任何其他直接执行的 Python 程序中访问 sys.ps1,您会看到相同的错误消息。在这种情况下,该 Python 程序本身就是 IDLE。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...