Error lors de l'utilisation du module coupling_tools

Bonjour
je débute avec OpenTurns sous Python 3.8.
Je travaille sous Windows 7, avec Anaconda3, python 3.8, openturns v1.15

j’ai développé un script python “run_automatic_optic.py” qui me permet de générer automatiquement un modèle géométrique, puis un maillage, puis la réalisation d’un calcul par éléments finis, tout cela paramétré via un fichier “input.txt” et les résultats sont transcrits dans un fichier “output.txt”

j’ai ensuite voulu mettre en place un script pour tester openturns et son module coupling_tools
et j’ai eu des erreurs lorsque mon script python “test_use_openturns” lance l’exécution de mon script ““run_automatic_optic.py”” via la méthode ct.execute(cmd)
l’erreur qui apparaissait est une “erreur de fichier introuvable” alors que un test os.path.exists m’indique que le “python.exe” est bien là, que mon script ““run_automatic_optic.py”” est bien là

Pour le moment j’ai résolu le problème en remplaçant l’appel à ct.execute(cmd)
par un appel direct à subprocess.run(cmd)
et dans ce cas tout fonctionne!

Je joins ci-après des captures écran des erreurs générées et mon script faisant appel à openturns.coupling_tools (qui lui-même exécute un autre script python “run_automatic_optic.py”)

test_use_openturns_python_error_part1|663x359 test_use_openturns_python_error_part2

test_use_openturns_python_part2

c’est un bug, notre execute mange les backslashs en mode non-shell sous windows, ça devrait marcher en passant par le shell avec l’argument is_shell=True
ce sera corrigé pour la 1.16

Merci ! je viens d’essayer avec is_shell=True et cela a bien fonctionné !

Bonjour,
Dans ce cas c’est tant mieux.
Est-ce que l’utilisation de la fonction os.path.join, qui détermine le séparateur en fonction de la plateforme aurait résolu le problème ?


C’est à dire que j’aurai plutôt écris un script similaire à :
import os
cmd = os.path.join(sys.executable, "run_automatic_optic.py")

Cela permet d’obtenir un code aussi portable que possible : est-ce que cela contournerait le but de execute ?
Cordialement,
Michaël

pas vraiment, le correctif est ici si tu veux le détail:

Bonjour
os.path.join évite le prob des backslashs quand on crée un nom de fichier incluant son chemin d’accès mais cela ne peut être utilisé comme mentionné ci dessus,
sys.executable pointe vers le python.exe installé (y compris son chemin d’accès)

j’avais essayé en mettant ou non un “.” devant mon script “run_automatic_optic.py” et j’avais toujours le problème. le problème ne se produit pas en utilisant l’option is_shell

Merci à tous pour votre aide