python idle 2.7.9给出了错误的语法错误

时间:2015-05-16 20:40:08

标签: python python-idle

我有一个文件:pytest.py,这是一行:

print "hello world"

idle -r pytest.py

Python 2.7.9 (default, Apr  8 2015, 15:12:41) 
[GCC 4.2.1 Compatible FreeBSD Clang 3.4.1 (tags/RELEASE_34/dot1-final 208032)] on freebsd10
Type "copyright", "credits" or "license()" for more information.
>>> 
*** Error in script or command!
Traceback (most recent call last):
  File "pytest.py", line 1
    print "hello world"
                      ^
SyntaxError: invalid syntax
>>> 

在没有选项的情况下运行空闲,打开并运行该文件。这是在FreeBSD 10.0和py27-gtk2-2.24.0_3(python绑定)上。这在某些时候停止了工作,但我无法将其与特定的变化联系起来。所有包/端口都是最新的

3 个答案:

答案 0 :(得分:4)

空闲时会编译code = compile(source, filename, "exec") 代码as follows

compile

但是,默认情况下,-r inherits the calling code's future settings

  

可选参数flags和dont_inherit控制将来的语句(参见PEP 236)影响源的编译。如果两者都不存在(或者两者都为零),那么代码将使用那些在调用compile()的代码中生效的未来语句进行编译。

由于空闲的PyShell.py模块does enable print_function future flags,这意味着print("Hello world")中的所有代码都必须使用它。

将代码更改为library(splitstackshape) mc <- cSplit(mat.count, "count", sep =",", "long") boxplot(abs(count) ~ position, data = mc, varwidth = TRUE) 以解决问题。作为一个很好的副作用,你的代码也可以在Python 3.x中使用。

答案 1 :(得分:3)

我添加

时出现了这个问题
from __future__ import print_function

到PyShell.py的顶部,作为在Issue 22420中向后移植错误修复的一部分。我刚刚在Issue 24222中应用的修复程序是对第655行的更改。

-        code = compile(source, filename, "exec")
+        code = compile(source, filename, "exec", dont_inherit=True)

感谢'phihag'指出了问题。

答案 2 :(得分:0)

  

来自 future import print_function

     

print&#34; hello world&#34;

在我的系统上提供相同的结果

哦,poo不能使用vi - 答案是正确的