Python交互式解释器在Windows上总是返回“无效语法”

2024-05-15 02:49:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了一个非常令人困惑的问题。无论我在Python解释器中键入什么,都会返回“无效语法”。见下面的例子。我试过在运行解释器的提示符的代码页上瞎折腾,但似乎一点用都没有。

此外,我还没有在网上找到这个特别的,奇怪的错误。

任何人能提供的帮助都是很好的。我已经试过重新安装Python,但我没有任何运气-问题也存在于3.13和2.7中。

跑步: Python版本3.1.3, Windows XP SP3。

获取:

C:\Program Files\Python31>.\python
Python 3.1.3 (r313:86834, Nov 27 2010, 18:30:53) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.  
>>> 2+2
  File "<stdin>", line 1  
    2+2
       ^     
SyntaxError: invalid syntax

>>> x = "Oh, fiddlesticks."  
  File "<stdin>", line 1  
    x = "Oh, fiddlesticks."  
                           ^  
SyntaxError: invalid syntax

Tags: 代码键入错误stdinline语法解释器例子
3条回答

当以交互方式和无缓冲方式运行Python时,存在一个已知的问题,该问题计划在3.2中修复,并且可能会被移植到旧版本,请参见http://bugs.python.org/issue11098

最糟糕的是,人们可能在没有意识到的情况下使用了无缓冲的I/O。在我的例子(Python2.5.4(r254:67916))中,我在一段时间前设置了一个环境变量,这样Python就可以总是无缓冲地运行(在Windows上,这是Python unbuffered=YES,或者用任何非空字符串代替YES),然后就忘了它。移除env.var.为我解决了问题。

因此,检查这个环境变量可能是值得的。它不是默认设置的。

现在,样品已经被清理干净,看来问题出在线路终端上。

这不是一个解决方案,但是如果创建包含此代码的文件t.py,运行它,然后键入一些文本,会发生什么情况?以下内容:

import sys; print(repr(sys.stdin.readline()))

如果您键入类似2+2的内容,那么幸运的是,这将向您展示示例中的Python解释器得到了什么,这反过来可能会为问题提供一些线索。

也可以在命令提示下尝试此操作:

python -c "import sys; print(repr(sys.stdin.readline()))"

这将允许您键入一行并显示该行的详细信息。

有一次,在2002年,我成功地构建了一个Python版本,它不能在Windows行尾运行。它会给出这样的语法错误,指向行尾。但我发现在这种情况下这不太可能是一个问题,特别是因为您使用的是Windows安装。

我也有类似的问题,当我不经意地使用不间断的空格而不仅仅是空格时,但我不知道如何从提示中发生这种情况,而且2+2示例不使用空格或引号,这也可能是一个问题。

你在使用什么编码和键盘设置?

相关问题 更多 >

    热门问题