我有一个用python编写的应用程序。我想让我的用户能够通过允许他们运行自己的脚本来操作应用程序对象。他们可能会在脚本中发生错误。如果出现错误,我想确保应用程序不会停止运行。我想在我的应用中嵌入一个调试器来帮助他们调试脚本。Python作为Python应用程序中的最终用户脚本
例如我在我的应用程序在shapes.py定义一个点类:
class QVPoint(object):
def __init__(self, x, y):
self.x = x
self.y = y
def addPoint(self, aPoint):
self.x = self.x + aPoint.x
self.y = self.y + aPoint.y
我想使他们能够运行像脚本:
from shapes import QVPoint
a = QVPoint(1,1)
a.addPoint(QVPoint(2,2))
print "<" + str(a.x) + ',' + str(a.y) + ">"
print "<%d,%d>" % (a.x, a.y)
print 'done'
我想这必须使用的解释器,调试器,但我m不确定两个计数,1)如何将App中创建的对象展示给脚本,以及2)如何确保如果错误导致脚本停止,应用程序不会停止。
我确定这个问题以前一定要问过,但我找不到。欢迎所有的答案。
许多THX
大卫
请格式化您的代码。 – alternative 2010-06-11 18:00:04
只是为了澄清我想与脚本分享应用程序的状态。一个子流程将涉及设计一个协议来传达应用程序状态变化,并且会非常缓慢。在一个单独的线程上可能需要的唯一东西就是一个调试器 - 尽管我可能能够使用远程调试器。 – DangerMouse 2010-06-17 10:15:24
我想我的解决方案是使用compile()和eval()封装try:except。使用称为沙箱的空白模块的全局变量。 – DangerMouse 2010-06-17 11:26:41