[python] PyRun_SimpleFile ne fait rien

PyRun_SimpleFile ne fait rien [python] - Python - Programmation

Marsh Posté le 24-08-2020 à 13:54:53    

Hello,
 
J'ai un soucis que je ne comprends pas.
 
Je veut exécuter un script python depuis un programme en C.
J'arrive à faire un print python depuis du C, mais si je veu exécuter un fichier cela ne fonctionne pas.
La doc python est un peut light je trouve  [:baragor]  
 
voici le code

Code :
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <Python.h>
  4. //# -*- coding: utf-8 -*-
  5. int main(int argc,char *argv[])
  6. {
  7. char *file="toto.py";
  8. FILE* fp;
  9. Py_Initialize();
  10. //ça, ça marche  
  11. PyRun_SimpleString("print('Hello World from Embedded Python!!!')" );
  12. fp = _Py_fopen(file, "r" );
  13. printf("fp = %d\n", (int)fp);
  14.    
  15. //retourne toujours 0 ici et rien d'afficher dans le terminal.
  16. printf("PyRun %d\n",PyRun_SimpleFile(fp, file));
  17. Py_Finalize();
  18. return 0;
  19. }


 
le résultat : (désoler les hosts d'image sont proxytaffé)
 

Hello World from Embedded Python!!!
fp = 8521600
PyRun 0
 
Process returned 0 (0x0)   execution time : 0.143 s
Press any key to continue.


 
 
J'ai bien un handle pour "fp". je ne sais pas si le 0 de valeur return du Pyrun est bon signe ou pas.
 
Le pfichier .py

# -*- coding: utf-8 -*-
"""
Created on Wed Jul 15 11:29:10 2020
 
@author:*****
"""
 
print("bonjour" )


 
 
Des idées?  [:mr mala:1]  


---------------
Monde de merde | Restez curieux
Reply

Marsh Posté le 24-08-2020 à 13:54:53   

Reply

Marsh Posté le 24-08-2020 à 21:02:15    

Connais pas le serpent, mais au pif:
La doc dit que 0 veut dire "pas d'erreurs".
La doc (qui en effet est très light) dit aussi que sous Windows il vaut mieux utiliser fopen(..., "rb" ) (accent sur le "b" ). Et tu as bien un saut de ligne à la fin de ton fichier .py?

Reply

Marsh Posté le 25-08-2020 à 20:58:18    

Ah, pas con tient de passer par fOpen. Et ton b me fait tilter sur le fameux binary que je voyais.

 

J'ai posté pour le compte de ma stagiaire. Je transmeterais.

 

Entre temps on essaye de ne pas exécuter le fichier complet mais certaines fonctions.

 

Bon c'est pas si simple de récup une valeur en sortie de fonction.
Ils pourais avoir une meilleur docs. Pour le coup National Instrument et msdn sont bien foutu.

 


---------------
Monde de merde | Restez curieux
Reply

Marsh Posté le 25-08-2020 à 22:16:05    

fopen() ou _Py_fopen() j'en sais rien (ils en parlent dans la doc?), mais la doc dit qu'il faut rajouter le "b".

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed