IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Utilisation subprocess et données entrée


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur Mécanique Fluides
    Inscrit en
    Janvier 2024
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Fluides
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2024
    Messages : 20
    Par défaut Utilisation subprocess et données entrée
    Bonjour à tous,
    J'ai commencé à coder en python en 2024 (une bonne résolution n'est-ce pas ?) pour un projet professionnel et je suis actuellement bloqué avec l'utilisation de la fonction subprocess.
    En effet, je dois exécuter un script python (écrit en CPython avec les packages CPython classiques : numpy, scipy...) dans un environnement qui ne supporte pas CPython. Pas de problème, j'ai une astuce : subprocess.
    En effet, comme vous le savez cette fonction permet d'exécuter un code avec une version de python spécifiée par exemple. Voici juste après mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import os
    import subprocess
    os.chdir(r "Mon_emplacement_de_code")
    Python312 = r "C:\Users...\AppData\Local\Programmes\Python\Python312\python.exe"
    subprocess.call([Python312,'pyNukiyama.py'])
    Avec ce code je peux exécuter mon script pyNukiyama.py dans mon environnement qui ne supporte pas ce dernier code avec python 3.12 installé sur l'ordinateur. Super, ça marche !
    Cependant, j'ai maintenant besoin d'interagir avec ce script pyNukiyama.py pour modifier les entrées utilisées dans ce dernier script (en gros, effectuer une boucle avec les valeurs envoyées dans pyNukiyama.py et récupérer les valeurs de sortie.
    D'où ma question : comment faire ?
    Peut-être, modifier le script pyNukiyama.py avant de lancer le sous-processus avec ? Ou bien, ne pas utiliser un script sauvegardé mais directement le code dans le sous-processus (pyNukiyama ne contient que 10 lignes...) ? Une autre idée ?

    Merci pour votre aide !

    Bonne journée !
    Pierre

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 800
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par PierreLCV Voir le message
    (une bonne résolution n'est-ce pas ?)
    Pas certain. Une "bonne résolution" implique souvent un sacrifice (arrêter de fumer, boire, courrir les filles). Si apprendre Python te semble être un sacrifice je ne suis pas certain que tu sois dans la bonne voie. D'autant plus que les "bonnes résolutions" en général ne traversent pas le premier mois.
    Mais trêve de philosophie...

    Citation Envoyé par PierreLCV Voir le message
    Cependant, j'ai maintenant besoin d'interagir avec ce script pyNukiyama.py pour modifier les entrées utilisées dans ce dernier script (en gros, effectuer une boucle avec les valeurs envoyées dans pyNukiyama.py et récupérer les valeurs de sortie.
    D'où ma question : comment faire ?
    Peut-être, modifier le script pyNukiyama.py avant de lancer le sous-processus avec ? Ou bien, ne pas utiliser un script sauvegardé mais directement le code dans le sous-processus (pyNukiyama ne contient que 10 lignes...) ? Une autre idée ?
    Si j'ai bien suivi: le script pyNukiyama.py attend des entrées via input() et tu voudrais que ces entrées lui soient envoyées automatiquement.
    Il te faut alors utiliser la technologie des pipes (n'oublions pas que Python a été écrit au départ dans et pour Unix donc lui est implicitement lié).
    Si tu ne connais pas cette technique (issue d'Unix), elle consiste à remplacer le clavier utilisé à l'input par un flux de datas passé en entrée du programme et transmis par un pipe (un tube de communication)

    Exemple: voici un petit shell assez simple qui lit 2 valeurs au clavier et qui affiche la somme des deux
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/bin/bash
     
    read a
    read b
    echo $(($a+$b))

    Et voici une possibilité de l'appeler via Python en lui passant les valeurs directement: subprocess.run("./script.sh", input=b"2\n3").
    Tu noteras la simulation du <return> censé séparer les deux valeurs via le '\n".

    Après ce n'est pas la seule façon. Pour des entrées plus complexes tu peux passer par subprocess.communicate, jouer avec stdin et stdout etc.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 031
    Par défaut
    Bonjour,

    J'avoue ne pas tout comprendre, jamais eu ce genre de situation à gérer, mais je vois quelques possibilités,
    • Passer des arguments en ligne de commande au script pyNukiyama.py (ce qui demande à réécrire le script pour gérer ces arguments)
    • Utiliser subprocess.Popen pour interagir avec stdin, stdout et stderr


    je dois exécuter un script python (écrit en CPython avec les packages CPython classiques : numpy, scipy...) dans un environnement qui ne supporte pas CPython.
    Cette phrase me perturbe

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 303
    Par défaut
    salut,

    pyNukiyama.py c'est du Python pas du CPython qui est du C et qui, après compilation, a une extension .so ou .dll.

    Pourquoi ne pas importer pyNukiyama et interagir avec ce code tout simplement, surtout si tu peux le modifier ?

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur Mécanique Fluides
    Inscrit en
    Janvier 2024
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Fluides
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2024
    Messages : 20
    Par défaut
    Cher Sve@r, fred1599 & VinsS,
    Tout d'abord, merci beaucoup pour votre retour rapide ! Cher Sve@r, on pourrait filer ta remarque philosophique en rappelant que l'on a rien sans efforts . Mais laissons ce sujet de côté...
    Pour vous donner davantage de contexte. J'utilise un logiciel de thermique (Ansys) qui attends certaines conditions aux limites pour résoudre le problème par FEA. Pour définir ces conditions aux limites, j'ai besoin d'un code pyNukiyama qui, à partir de certaines entrées (Vitesse Fluide, Pression et Température), va me renvoyer ces fameuses conditions aux limites que Ansys attends pour résoudre.
    Le problème étant que Ansys ne peut pas utiliser le code pyNukiyama car, d'aprés ce que j'ai compris Ansys utilise IronPython qui n'est pas compatible avec certains modules du style numpy, scipy etc... utilisés dans mon code pyNukiyama. D'où le besoin d'utiliser subprocess pour pouvoir quand même lancer pyNukiyama depuis Ansys. Mais, je dois pouvoir spécifier mes entrées (V,P,T) pour pouvoir faire tourner pyNukiyama. Donc la question, c'est comment depuis mon API IronPython je peux à l'aide de subprocess faire tourner pyNukiyama.py avec un triplet (V,P,T) que je précise via une boucle dans mon API Ansys par exemple.
    - Pour les pipes, je ne suis pas sûr de comprendre comment faire cela et si c'est adapté à ma situation. Je pense que l'idée de fred1599 spécifiant d'utiliser stdin rejoint cette idée de pipe, mais peut-être serez vous en mesure de me dire avec ces nouveaux élèments si cela vous semble possible...
    - l'idée d'utiliser des arguments que je spécifie dans mon appel à la fonction subprocess est intéressante mais j'avoue ne pas trop savoir comment faire...
    - enfin VinsS, comme tu l'as sans doute mieux compris désormais, je ne peux hélas pas importer pyNukiyama dans mon logiciel (et donc pas non plus interagir avec), je suis astreint à le lancer dans subprocess qui me bloque l'interaction...

    Merci de votre aide,
    Cordialement,
    Pierre

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 677
    Par défaut
    Citation Envoyé par PierreLCV Voir le message
    - Pour les pipes, je ne suis pas sûr de comprendre comment faire cela et si c'est adapté à ma situation. Je pense que l'idée de fred1599 spécifiant d'utiliser stdin rejoint cette idée de pipe, mais peut-être serez vous en mesure de me dire avec ces nouveaux élèments si cela vous semble possible...
    - l'idée d'utiliser des arguments que je spécifie dans mon appel à la fonction subprocess est intéressante mais j'avoue ne pas trop savoir comment faire...
    - enfin VinsS, comme tu l'as sans doute mieux compris désormais, je ne peux hélas pas importer pyNukiyama dans mon logiciel (et donc pas non plus interagir avec), je suis astreint à le lancer dans subprocess qui me bloque l'interaction...
    La bonne nouvelle est que pour faire communiquer du python sous IronPython avec du Python sous CPython, faire communiquer 2 processus entre eux est une solution jouable.

    Le soucis est qu'à la base, ça n'a rien à voir avec Python: passer des arguments à un process qu'on lance la communication via des PIPEs sont des mécanismes systèmes. Python ne fait que donner la possibilité au programmeur python d'utiliser ces mécanismes mais si on ne sait pas ce qu'ils sont, ni les messages à échanger, il y a un peu d'apprentissage à faire.

    Ceci dit, échanger des informations via des fichiers sera peut être plus simple (si ça peut fonctionner avec de simples fichiers).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur Mécanique Fluides
    Inscrit en
    Janvier 2024
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Fluides
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2024
    Messages : 20
    Par défaut
    Cher Wiztricks,
    Je ne pas sûr de comprendre ton message... Ce n'est pas très grave, j'ai réussi à avancer un peu en utilisant l'option subprocess.popen. Voici mes codes:
    le code "principal" que je peux exécuter dans mon environnement dégradé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Vwater = 4
    Pwater = 10
    Twater = 120
     
    p=subprocess.Popen("appel_nukiyama.py",stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)
    out,err = p.communicate(input=f"{Vwater}, {Pwater}, {Twater}".encode())
    result = out.decode()
    Et le appel_nukiyama.py

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    import pyNukiyama
     
    Vwater, Pwater, Twater = input("").split(",",3)
     
    Tmin=10
    Tmax=350
     
    nuki = pyNukiyama.pyNukiyama("s", 0.021, 0, 0, 0, 0, 0, 0, 0.021, float(Twater), float(Pwater), float(Vwater), Tmin, Tmax)
    nuki.waterParameters()
    nuki.siederTate()
    nuki.berglesRohsenhow()
    nuki.CHF()
     
     
    print(f"{nuki.tchf}]")
    print(f"{nuki.wchf}]")
    print(nuki.Tw_cut)
    print(nuki.hTot_cut)
    Cela fonctionne pas trop mal pour le moment. Le seul problème c'est qu'avec ces deux codes je récupère les données renvoyées par les 4 print de appel_nukiyama.py au format "string" donc c'est pas super facile de remettre les données au bon format dans le code principal...

    Merci de votre aide,
    Cordialement
    Pierre

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 800
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par PierreLCV Voir le message
    Je ne pas sûr de comprendre ton message...
    En fait, il te dit juste que la technologie de communication inter-processus est une technologie assez courante (tous les OS la possèdent) donc elle s'apprend "à part" (pas forcément dans Python) mais il te faut l'apprendre si tu veux bien la comprendre et l'utiliser.
    Et ensuite Python t'offre une porte d'entrée dans cette techno.

    Citation Envoyé par PierreLCV Voir le message
    Voici mes codes:
    Essaye d'aérer un peu. Un espace après la virgule (comme en grammaire) ça ne coûte rien et ça aide à lire (relire) le code.
    p=subprocess.Popen("appel_nukiyama.py", stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)...

    Citation Envoyé par PierreLCV Voir le message
    Cela fonctionne pas trop mal pour le moment. Le seul problème c'est qu'avec ces deux codes je récupère les données renvoyées par les 4 print de appel_nukiyama.py au format "string" donc c'est pas super facile de remettre les données au bon format dans le code principal...
    Tu peux utiliser les fonctions natives Python (ex int("123") te donne un int valant 123, float("123") te donne un float valant 123.0, etc)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 031
    Par défaut
    @PierreLCV,

    J'ai du mal Mais on va y arriver, j'aime bien quand les choses sont clairement définis, quitte à être bête dans mes questionnements.

    Déjà sujet à ma réponse précédente, je voyais quelque chose comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    process = subprocess.Popen(
        [Python312, 'pyNukiyama.py'],
        stdin=subprocess.PIPE, 
        stdout=subprocess.PIPE
    )
     
    stdout, stderr = process.communicate(input='vos_entrees')
    Cette méthode est utile pour automatiser les interactions avec des scripts qui attendent des entrées utilisateur ou pour tester des scripts de manière programmée.

    l'idée d'utiliser des arguments que je spécifie dans mon appel à la fonction subprocess est intéressante mais j'avoue ne pas trop savoir comment faire...
    Pour être assez concis, tu dois modifier ton code pyNukiyama.py pour qu'il accepte des arguments (par ex. avec sys.argv) et exécuter pyNukiyama.py avec ses arguments comme cela,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    subprocess.call([Python312, 'pyNukiyama.py', 'arg1', 'arg2'])
    ----------

    Tu utilises IronPython, si je comprend bien, ça ne s'exécute pas comme un script python standard, on peut connaître le contenu de ce script ? Il n'y a que du python, du .NET ?

  10. #10
    Membre averti
    Homme Profil pro
    Ingénieur Mécanique Fluides
    Inscrit en
    Janvier 2024
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Fluides
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2024
    Messages : 20
    Par défaut
    Trés chers fred1599 & Sve@r,
    Tout d'abord, merci beaucoup pour vos réponses !
    Il s'avére que Ansys a récemment incorporé CPython en version beta dans le logiciel que j'utilise. J'ai donc à ma disposition IronPython (le mode par défaut) et CPython en version beta (et donc non supporté).
    En me mettant en "mode" CPython beta, je peux executer mon code pyNukiyama directement sans passer par subprocess. PROBLEME : Pour poser mon probléme (ie définir les conditions aux limites) je dois utiliser par la suite une fonction Quantity qui semble fonctionner que avec IronPython... Argh quelle deception
    Me voilà donc obligé de rester en IronPython, ce qui n'est pas forcément une mauvaise chose et m'évite de travailler avec des versions BETA.
    Concernant ta solution fred1599 qui est je pense pertinente, on est d'accord que subprocess.Popen et subprocess.call sont deux solutions différentes ? Je vais creuser ces deux voies.
    Je pense effet utiliser les fonctions natives de Python pour récupérer les valeurs dans les chaines de caractéres... ca va être du sport !

    Merci de votre aide,
    Pierre

  11. #11
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 031
    Par défaut
    On peut voir cette fonction Quantité ?
    Il n'y a pas un moyen de là réécrire en pur python ? Que fait cette fonction ?

    Édit : oui call et popen pour ton cas sont même 2 paradigmes différents. 🙂

  12. #12
    Membre averti
    Homme Profil pro
    Ingénieur Mécanique Fluides
    Inscrit en
    Janvier 2024
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Fluides
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2024
    Messages : 20
    Par défaut
    Cher fred1599,
    Merci pour ton retour trés rapide !
    Alors, j'ai essayé ta solution avec popen, voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import os
    import subprocess
    os.chdir(r"C:\Users\...\Documents\Bac à sable\pyNukiyama")
    Python312 = r"C:\Users\...\AppData\Local\Programs\Python\Python312\python.exe"
     
    process = subprocess.Popen([Python312,'appel_nukiyama.py'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
    out,err = process.communicate(input=f"{Vwater}, {Pwater}, {Twater}".encode())
    En l'executant avec CPython (beta) ça marche mais pas avec IronPython qui me renvoi "invalid syntax"... le lourd !
    Je vais peut-être essayer avec subprocess.call désormais...
    Alors, la fonction Quantity est une fonction un peu spécifique à Ansys Mechanical je pense et qui permet d'avoir dans un même objet la valeur numérique ainsi que la dimension associée à cette dernière. C'est je pense une fonction trés simple qui prend deux arguments une valeur numérique et son unité, ex : Quantity("10 [C]"). J'ai hélas besoin de cette fonction pour poser mon problème...

    Merci encore !

  13. #13
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 031
    Par défaut
    Pourtant IronPython a subprocess dans sa doc, c'est bizarre cette erreur de syntaxe.

    Et je vois pas d'erreur dans tes lignes de code...

    EDIT: Peux-tu donner l'erreur entière ?

  14. #14
    Membre averti
    Homme Profil pro
    Ingénieur Mécanique Fluides
    Inscrit en
    Janvier 2024
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Fluides
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2024
    Messages : 20
    Par défaut
    Cher Fred,
    Merci pour ta vérification... en effet, cette erreur est bizarre...
    Voici une capture d'écran du code éxécuté en IronPython avec l'erreur "invalid syntax" et le même code executé en CPython sans problème...
    Nom : IronPython.GIF
Affichages : 410
Taille : 18,8 Ko
    Je ne sais pas trop quoi faire face à cela...

  15. #15
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 031
    Par défaut
    est-ce que ironpython n'exécuterait pas du python 2.x ? Si c'est le cas tu devrais écrire print err et non print(err)

  16. #16
    Membre averti
    Homme Profil pro
    Ingénieur Mécanique Fluides
    Inscrit en
    Janvier 2024
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Fluides
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2024
    Messages : 20
    Par défaut
    Alors oui c'est possible IronPython utilise du Python 2 mais hélas l'erreur de syntaxe apparait sans le print(err)... il doit y avoir une faute ailleurs...

  17. #17
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 031
    Par défaut
    Tu devrais traiter ligne par ligne sur ton interpréteur pour voir où est provoquer cette erreur de syntaxe

    EDIT : Je pense peut-être au format de ton répertoire bac à sable (espace et accent)

  18. #18
    Membre averti
    Homme Profil pro
    Ingénieur Mécanique Fluides
    Inscrit en
    Janvier 2024
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Fluides
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2024
    Messages : 20
    Par défaut
    Alors j'ai vérifié ligne par ligne le code suivant avec l'environnement IronPython
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import os
    import subprocess
    os.chdir(r"C:\Users\...\Documents\Bac à sable\pyNukiyama")
    Python312 = r"C:\Users\...\AppData\Local\Programs\Python\Python312\python.exe"
     
    process = subprocess.Popen([Python312,'appel_nukiyama.py'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
    out,err = process.communicate(input=f"{Vwater}, {Pwater}, {Twater}".encode())
    Il apparait que tout va bien (tout du moins je n'ai pas d'erreurs) si je retire la dernière ligne. Mais alors une invite de commande s'ouvre a partir de Python312 et demeure en standby (attendant) sans doute les données d'entrées... Si je réactive la dernière ligne, c'est là que le problème de syntaxe apparait... Ce serait donc la dernière ligne qui pose problème... Je vais creuser cela demain !

    Merci encore de votre aide
    Pierre

  19. #19
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 031
    Par défaut
    Si je réactive la dernière ligne, c'est là que le problème de syntaxe apparait
    Peut-être regarder du côté du paramètre timeout de Popen.

  20. #20
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 503
    Par défaut
    Une question que l'on a pas évoqué: on ne peut pas réécrire le code de ton script pyNukiyama.py sans utiliser les librairies non compatibles IronPython? (comme on ne sait toujours pas son code et sa complexité)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/04/2007, 08h42
  2. Tuer un programme utilisant un port donné
    Par Nasky dans le forum Administration système
    Réponses: 2
    Dernier message: 18/03/2007, 15h01
  3. différence de donnés entre 2 bases
    Par JauB dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 30/06/2006, 10h44
  4. partage de donné entre 2 thread
    Par firejocker dans le forum MFC
    Réponses: 7
    Dernier message: 26/01/2006, 14h54
  5. utiliser base de donné d'1 autre site
    Par hm19000 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 15/11/2005, 13h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo