Exécution de scripts Python

Exécution de scripts Python

Objectif

L’exécution de scripts Python par un programme Java peut être une solution intéressante pour incorporer le travail d’un scientifique dans l’écosystème du SEDOO.

Dépendance

La librairie suivante va permettre de simplifier le travail autour de Python.

...
<dependency>
  <groupId>fr.sedoo</groupId>
  <artifactId>sedoo-python-utils</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</dependency>
...
<repository>
  <id>sedoorepo</id>
  <url>https://api.sedoo.fr/aeris-cdn-rest/mavenrepo</url>
  <snapshots>
    <enabled>true</enabled>
  </snapshots>
</repository>
...

Mise en place d’un environnement virtuel

Chaque application doit être capable d’installer les librairies Python dont elle a besoin, dans une version spécifique, sans perturber les autres applications utilisant Python. Ceci s’effectue en installant un environnement virtuel au sein de ${application.folder} au premier lancement de l’application.

Ceci s’effectue, par exemple, de la manière suivante:

private String venvdir;
private String scriptdir;
private List<PythonLibrary> libraries;
private ApplicationContext applicationContext;
	
@PostConstruct
public void init() {
	log.info("Starting initialisation of python environment");
	try {
		PythonUtils.installVirtualEnv(libraries, getVirtualEnvFolder(), getScriptFolder(), false);
		log.info("Initialisation of python environment completed");
	} catch (ProcessExecutionException e) {
		log.error("An error has occured while initialising python environnement: {}", ExceptionUtils.getStackTrace(e));
		((ConfigurableApplicationContext) applicationContext).close();
	}	
}

Exécution d’un script

L’exécution d’un script Python s’effectue de la manière suivante:

// A compléter

Bonnes pratiques

Plusieurs bonnes pratiques doivent être mise en place afin que l’intégration soient pérenne:

  • L’ensemble du fonctionnement doit être discuté avec le fournisseur du script python
  • Les librairies externes doivent être explicitées. Les versions de ces librairies doivent être fixées si possible
  • Les différents répertoires de travail doivent être passés en paramètres
  • Les appels entre scripts doivent être vérifiés

Rechercher