2017-06-05 7 views
0

Nous développons une application RCP censée déboguer/exécuter des scripts Jython. Ces scripts contiennent nos annotations spécifiques, nous avons donc dû créer notre propre instance PythonInterpreter et la configurer pour prendre en charge nos modules et gestionnaires. Nous essayons d'intégrer PyDev dans notre application afin d'obtenir le débogueur, l'éditeur et ce qui ne l'est pas, mais nous avons des problèmes lorsque nous essayons de définir notre propre objet interpréteur Jython sur PyDev.Définition de l'interpréteur jython sur PyDev

Comment cela est-il censé être fait? D'après une enquête, nous pouvons voir que le gestionnaire d'interpréteur nécessite un exécutable (jython ou python). Est-il possible de définir notre objet sur PyDev ou d'étendre l'objet interpréteur de PyDev et d'ajouter nos gestionnaires et modules?

EDIT:

Ainsi, les problèmes que nous avions sont que lorsque nous avons essayé de mettre en pot Jython comme un interpréteur Jython programme, nous avons eu des erreurs qu'il n'a pas eu la classe principale et ne pouvait pas être considérée comme un interprète . Ce que nous avons fait, c'est que nous avons trouvé un pot autonome Jython approprié qui ne nous a pas causé ces problèmes. En définissant nos modules et gestionnaires, nous avons en quelque sorte étendu les capacités de script de Jython par programmation pour avoir des annotations dont l'interpréteur est conscient. Par exemple, si nous avons le code python:

@valueChangeHandler(context.controls.Blank.button_0) 
def ASP1_configurePanelSettings(event): 
    print "Stuff happend" 

l'interprète est conscient que la fonction @ annoté sera exécutée quand un événement se produit. Nous devons également ajouter des bibliothèques avec certains fichiers jar lorsque l'interpréteur est instancié. Par exemple:

interpreter.exec("import sys"); 
if (modulePaths != null && modulePaths.length > 0) 
{ 
    final StringBuilder imports = new StringBuilder(); 
    for (final String modulePath : modulePaths) 
     imports.append("\nsys.path.append('" + modulePath + "')"); 
    interpreter.exec(imports.toString()); 
} 

Donc, pour ce faire, nous avons besoin d'avoir un objet interpréteur à notre disposition à tout moment. Nous avons remarqué que lorsque le fichier .py est ouvert dans l'éditeur pydev, une nouvelle instance d'interpréteur est créée. Est-il possible d'obtenir cet objet interpréteur dans notre code et de le manipuler?

Répondre

0

Vous devriez être en mesure de configurer votre propre interpréteur Jython par le biais de org.python.pydev.ui.interpreters.JythonInterpreterManager et de le configurer selon vos besoins via la méthode org.python.pydev.ui.interpreters.AbstractInterpreterManager.setInfos(IInterpreterInfo[], Set<String>, IProgressMonitor).

+0

Nous avons essayé ceci (similaire à https://stackoverflow.com/questions/10587681/adding-python-interpreters-programmatically), bien que nous ayons eu quelques problèmes lors de la définition de notre interpréteur puisque nous essayons de mettre jaryon standalone à la place. de l'exécutable (nous n'avons pas notre exécutable). Je ne sais pas comment faire pour que PyDev sache qu'il doit utiliser les objets PythonInterpreter que nous sommes en train d'instancier ou pour étendre l'objet PythonInterpreter de PyDev avec nos propres modules et gestionnaires. –

+0

Je n'ai pas compris exactement ce que vous voulez dire ... quels problèmes? En outre, le jython est toujours défini comme .jar, pas exécutable, donc, je ne comprends pas ce qui ne fonctionne pas et que voulez-vous dire par rapport à vos propres modules et gestionnaires. –

+0

Je vais étendre la description avec des explications plus détaillées. –