J'ai une application écrite en python. Je veux donner à mes utilisateurs la possibilité de manipuler les objets des applications en leur permettant d'exécuter leurs propres scripts. Ils sont susceptibles de faire des erreurs dans leurs scripts. S'il y a une erreur je veux m'assurer que l'application n'arrête pas de fonctionner. J'aimerais intégrer un débogueur dans mon application pour les aider à déboguer leurs scripts.Python en tant que script d'utilisateur final dans une application python
par exemple. Je défini une classe de points dans mon application à 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
Je veux leur permettre d'exécuter des scripts comme:
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'
Je figure cela doit utiliser l'interpréteur, le débogueur mais je Je ne suis pas sûr de deux choses, 1) comment exposer les objets qui sont créés dans l'application au script, et 2) comment s'assurer que l'application ne s'arrête pas si un bug provoque l'arrêt du script.
Je suis sûr que cela doit avoir été demandé auparavant, mais je ne peux pas le trouver. Toutes les réponses sont les bienvenues
Beaucoup thx
David
Formatez votre code s'il vous plaît. – alternative
Juste pour clarifier je veux partager l'état de l'application avec le script. Un sous-processus impliquerait l'élaboration d'un protocole pour communiquer les changements d'état de l'application et serait très lent. La seule chose qui pourrait être nécessaire sur un thread séparé serait un débogueur à l'occasion - même si je pourrais être en mesure d'utiliser un débogueur distant. – DangerMouse
Je pense que ma solution sera d'utiliser compile() et eval() enveloppé par try: except. en utilisant les globales d'un module vide appelé sandbox. – DangerMouse