Python Can';t在怠速下更换系统ps1

Python Can';t在怠速下更换系统ps1,python,prompt,python-idle,ps1,Python,Prompt,Python Idle,Ps1,我最近听说,可以通过更改变量sys.ps1来更改python中的提示符。所以我决定打开IDLE,写一些类似的东西: >>> import sys >>> sys.ps1 = ":::" 但是,这创建了一个新变量,没有任何更改(提示仍然是“>>>”)-我重新启动IDLE并检查了这个变量是否由python读取。。。没有: >>> sys.ps1 Traceback (most recent call last): Fil

我最近听说,可以通过更改变量
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'
>>sys.ps1
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
sys.ps1
AttributeError:模块“sys”没有属性“ps1”
那么,如何在python中更改提示符呢?
注意:正确读取了sys模块的其他函数/变量。

指定主提示和辅助提示的提示字符串(在本例中,它们的初始值为
>
..
)只有当解释器处于交互式模式,并且或多或少是Python的集成开发环境时,才能定义解释器的类型

Python交互模式:

请参阅《Python bug追踪器》上的第13657期。它于2011年开放,至今仍未解决(截至撰写本文时)。因此,不可能仅仅因为IDLE不支持在IDLE的Python shell中更改提示符

更新(不到24小时后):问题现已解决。在即将随Python 3.10发布的IDLE版本中,提示将以不同的方式显示。见上面空闲开发者Terry Jan Reedy的评论。将来可能会添加更改提示的设置

在当前和早期的Python/IDLE版本中,可以在启动IDLE之前自定义提示,但不能在运行它时自定义。您需要一个小的启动脚本来实现这一点:

导入系统 sys.ps1=':' 导入idlelib.idle

您得到该错误消息的原因(
module'sys'没有属性'ps1'
)是因为IDLE呈现给您的Python shell实际上没有处于“交互”模式。只有到那时才有定义。如果您试图在任何其他直接执行的Python程序中访问sys.ps1
,则会看到相同的错误消息。在这种情况下,Python程序本身是空闲的。

非常感谢!我刚刚关闭了#13657,因为我在上面的评论中描述了3.10.0b1中的Shell更改。上面的代码段应该不再工作了。您可以正确地看到,当Python从idlelib/IDLE.pyw或其他idlelib文件运行空闲应用程序时,Python不是处于交互模式,而是处于正常的批处理文件模式。恰巧Python包含了足够多的函数,包括运行时
compile
,使在大多数方面模拟交互模式变得相当容易。在3.10.0b1中,已从交互输入的第一行删除提示,以启用使用4空格缩进,而不是扩展到8空格的制表符。第一种解决方案是带有固定提示的侧边栏。第二种解决方案是,在3.10.0b2中,在一行上单独放置一个提示,可以使用对话框选项而不是sys设置进行更改。