我有一个用 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'
我认为这必须使用解释器和调试器,但我不确定两个方面,1) 如何将应用程序中创建的对象暴露给脚本,以及 2) 如何确保应用程序不如果错误导致脚本停止,则不要停止。
我确定之前一定有人问过这个问题,但我找不到了。欢迎大家回答。
非常感谢
大卫
请您参考如下方法:
我建议您使用单独的解释器实例(单独的 Python 进程)来评估用户的脚本。这将保证用户脚本中的任何中断都不会影响您的应用程序。您可以使用 os 模块运行外部进程,这是一种方法:http://docs.python.org/library/os.html#os.popen
您可以允许用户的脚本从您的应用程序中导入某些模块,以便脚本可以访问您定义的变量。
