我有一個用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