2014-04-18 32 views
1

的Python 2.7.3:Python中类型错误:超(类型,OBJ)运行pyprocessing脚本时交互

from pyprocessing import * 

def setup(): 
    size(100,100) 

def draw(): 
    rect(10,10,10,10) 

run() 

现在:

创建尽可能简单的pyprocessing文件并将其保存为foo.py

>>> execfile('foo.py') 

该文件运行正常。关闭pyprocessing窗口返回到提示符下输入:

>>> execfile('foo.py') 

和你打招呼用:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "foo.py", line 9, in <module> 
    run() 
    File "/usr/local/lib/python2.7/dist-packages/pyprocessing-0.1.3.22-py2.7.egg/pyprocessing/__init__.py", line 417, in run 
    __main__.setup() 
    File "foo.py", line 4, in setup 
    size(100,100) 
    File "/usr/local/lib/python2.7/dist-packages/pyprocessing-0.1.3.22-py2.7.egg/pyprocessing/__init__.py", line 335, in size 
    config=canvas.config, caption=caption, visible = isVisible) 
    File "/usr/local/lib/python2.7/dist-packages/pyprocessing-0.1.3.22-py2.7.egg/pyprocessing/flippolicy.py", line 142, in __init__ 
    super(BackupWindow, self).__init__(*args, **keyargs) 
    File "/usr/local/lib/python2.7/dist-packages/pyglet-1.1.4-py2.7.egg/pyglet/window/xlib/__init__.py", line 474, in __init__ 
    super(XlibWindow, self).__init__(*args, **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/pyglet-1.1.4-py2.7.egg/pyglet/window/__init__.py", line 690, in __init__ 
    self.set_visible(True) 
    File "/usr/local/lib/python2.7/dist-packages/pyglet-1.1.4-py2.7.egg/pyglet/window/xlib/__init__.py", line 878, in set_visible 
    self._map() 
    File "/usr/local/lib/python2.7/dist-packages/pyglet-1.1.4-py2.7.egg/pyglet/window/xlib/__init__.py", line 710, in _map 
    self.dispatch_event('on_resize', self._width, self._height) 
    File "/usr/local/lib/python2.7/dist-packages/pyglet-1.1.4-py2.7.egg/pyglet/window/__init__.py", line 1219, in dispatch_event 
    EventDispatcher.dispatch_event(self, *args) 
    File "/usr/local/lib/python2.7/dist-packages/pyglet-1.1.4-py2.7.egg/pyglet/event.py", line 352, in dispatch_event 
    event_type, args, getattr(self, event_type)) 
    File "/usr/local/lib/python2.7/dist-packages/pyglet-1.1.4-py2.7.egg/pyglet/event.py", line 349, in dispatch_event 
    return getattr(self, event_type)(*args) 
    File "/usr/local/lib/python2.7/dist-packages/pyprocessing-0.1.3.22-py2.7.egg/pyprocessing/flippolicy.py", line 168, in on_resize 
    super (FBOWindow, self).on_resize(w,h) 
TypeError: super(type, obj): obj must be an instance or subtype of type 

这到底是怎么回事?这是一个错误,我是否使用pyprocessing错误?

+0

嗨,看到这个答案http://stackoverflow.com/questions/5788891/execfile-with-argument-in-python-shell – archetipo

+0

@archetipo:你能解释这是如何与这个问题有关吗? – LondonRob

+0

因为不是运行这种类型的脚本的好方法,如果您尝试使用子进程运行此脚本,您会收到相同的错误?为了定义,pyprocessing建立在openGL和pyglet之上,这需要一个专门的过程来使其稳定。 – archetipo

回答

1

此作品为subprocess每次产生一个独立的过程:

from subprocess import call 
call([sys.executable, 'foo.py']) 

subprocess.call更详细的讨论见this SO question

+0

阅读评论,我的投票不是谢谢,但一个很好的,因为解决方案是在一起推理...在这个问题上,解决方案是方法不是使用的方法.. – archetipo