我有一个文件: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绑定)上。这在某些时候停止了工作,但我无法将其与特定的变化联系起来。所有包/端口都是最新的
答案 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 - 答案是正确的