如果我选择以下代码并单击"运行所选代码"在日食中,它会给我一个错误。
class abc(object):
def __init__(self):
print 'base'
def run(self):
print 'run'
错误讯息:
class abc(object):
def __init__(self):
print 'base'
def run(self):
print 'run'
File "<ipython-input-22-8e1ec627fd90>", line 1
def run(self):
^
SyntaxError: unexpected EOF while parsing
run
但是,如果我删除两个函数之间的空格,那么它将运行Ok(见下文),这是pydev中的错误吗?我能以任何方式解决这个问题吗?
class abc(object):
def __init__(self):
print 'base'
def run(self):
print 'run'
版本:
Eclipse 4.4.2
LiClipse 2.0.0.201504092214
Subclipse(必填)1.10.13
答案 0 :(得分:1)
我认为您所看到的是使用交互式控制台运行代码的结果(即:http://www.pydev.org/manual_adv_interactive_console.html)。
问题在于,当您通过该操作将代码发送到控制台时,它不会对您的代码进行任何编辑,并且当控制台看到一个0宽的行时,它会得出结论是Python块完了。
因此,有一些解决方法:
不要对块进行右边修剪(即:将空格留给块缩进而不是0宽线)。
如果您不想只运行代码的一部分,请取消选择所有代码并使用Ctrl + Alt + Enter执行整个文件。
取消选择代码,转到第一行,然后用F2逐行将内容发送到控制台(F2将发送当前行,并将光标移动到包含内容的下一行,甚至可能修复缩进,因此,应该很容易选择要发送到控制台的块。
不要使用交互式控制台并使用F9进行普通运行(尽管在这种情况下,它将在新的非交互式控制台中启动,但之后的符号将无法进行检查)。
如果您使用TDD(测试驱动开发),则使用Ctrl + F9运行测试代码(有关详细信息,请参阅http://www.pydev.org/manual_adv_pyunit.html) - 再次,在此模式下它将不会使用交互式控制台。