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 :

Problème import Python


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Points : 15
    Points
    15
    Par défaut Problème import Python
    Bonjour à tous,

    je suis confronté à un problème suite à un projet que j'effectue et j'aurai besoin de votre aide svp. Voila à partir d'un programme en C je fais appel à une fonction python qui me retourne des données, jusque là tous va bien j'ai suivi un tutoriel et cela fonctionne parfaitement. Pour l'instant ma fonction python me retourne juste un chaine de caractère!

    j'ai ensuite voulu que ma fonction python effectue un peu plus de chose, j'ai donc du faire appel à des libs python ( "from ... import ..." ) pour pourvoir effectuer le travail souhaité. C'est là que le problème arrive, dès lors de l'ajout d'un import dans mon fichier python rien ne va plus, mon programme C crash et me retourne un segmentation fault!

    Voici le code que j'utilise:
    Code C:
    Code C : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    #include <iostream>
    #include <Python.h>
     
    using namespace std;
     
    // Déclarer les objets python indispensables
    PyObject *pName, *pModule, *pArgs, *pFunc,*pRet;
     
    int main()
    {
        // Petite string C++ à échanger
        string str = "I'am a C++ string.";
     
        // Initialise le Python Interpreter comme StandAlone (pas besoin d'installation mais besoin de la DLL)
        Py_NoSiteFlag = 1;
        Py_FrozenFlag = 1;
        Py_IgnoreEnvironmentFlag = 1;
        Py_SetPythonHome((char *)(""));
        Py_SetProgramName((char *)(""));
     
        Py_Initialize();
        PyRun_SimpleString ("import sys; sys.path.insert(0, '/home/pi/Desktop/test2')");
     
        // importer le script python (.py)
        pModule = PyImport_ImportModule("capteur");
     
        // Passer le str comme argument python
        pArgs = Py_BuildValue("(s)", str.c_str());  
     
        // Appeler la fonction dans le script
        pFunc = PyObject_GetAttrString( pModule,"fonction_capteur");
     
        pRet = PyEval_CallObject(pFunc, pArgs);
     
        // Faire un echo du résultat
        if ( PyString_Check(pRet) ){
            cout << "result from python : " << PyString_AsString(pRet) << endl;
        }
     
        // Ecrire les erreurs pythons ( if any )
        PyErr_Print();
     
        // Libérer les pointers
        Py_DECREF(pFunc);
        Py_DECREF(pRet);
        Py_DECREF(pArgs);
        Py_DECREF(pModule);
     
        // Finish the Python Interpreter
        Py_Finalize();
     
        return 0;
    }

    Code python :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    #
    # Script principal appelé par C++
    # Attention ce script et tous les scripts Python doivent être en UTF-8 avec # -*- coding: utf-8 -*-
     
    from sense_hat import SenseHat
     
    def fonction_capteur(pData):
        print "#helloEntry: " + pData # Venant de C++
     
        result =  "value from python (string)" # Retour du résultat dans C++
        return result
    La simple supression de la ligne "from sense_hat import SenseHat" permet de faire fonctionner le programme correctement mais dès que je l'ajoute plus rien !!

    Merci beaucoup pour votre aide

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par Falex Voir le message
    La simple supression de la ligne "from sense_hat import SenseHat" permet de faire fonctionner le programme correctement mais dès que je l'ajoute plus rien !!
    Il devrait être simple de créer un module sense_hat.py ne contenant que la déclaration de SenseHat. Si çà fonctionne, c'est qu'il y a quelque chose dans sense_hat qui fait péter le truc. A vous de le trouver pas élimination ou autre heuristique.

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

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Bonjour,

    effectivement cela vient bien du import "sense_hat" qui est une lib d'utilisation de la carte sense hat pour raspberry, cependant les lignes dans ce fichier qui font tout planter sont les imports "import struct" , "import os" et d'autre que je passe. Pourtant ceux là devraient fonctionne parfaitement ? Il ne s'agit pas de fichier de base python?

    merci d'avance

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par Falex Voir le message
    effectivement cela vient bien du import "sense_hat" qui est une lib d'utilisation de la carte sense hat pour raspberry, cependant les lignes dans ce fichier qui font tout planter sont les imports "import struct" , "import os" et d'autre que je passe. Pourtant ceux là devraient fonctionne parfaitement ? Il ne s'agit pas de fichier de base python?
    Ben je dirais que si vous écrivez en C vous êtes encore plus tenu (comparé au débutant Python) de savoir le pourquoi de chaque instruction écrite (ou recopiée) dans votre code. Relisez la documentation de Py_SetPythonHome...

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

Discussions similaires

  1. problème import pygtk dans Python
    Par fabien21 dans le forum Bibliothèques tierces
    Réponses: 18
    Dernier message: 06/11/2014, 13h15
  2. [Python 3.X] Problème d'import Python
    Par ofortuna dans le forum Général Python
    Réponses: 6
    Dernier message: 28/07/2014, 12h24
  3. Problème import Export...(syntaxe)
    Par friiitz dans le forum Access
    Réponses: 3
    Dernier message: 02/05/2006, 14h13
  4. Problème import de feuilles excel
    Par elkhy dans le forum Access
    Réponses: 9
    Dernier message: 25/04/2006, 09h54
  5. problème importation excel
    Par choupa25 dans le forum Access
    Réponses: 2
    Dernier message: 22/12/2005, 06h41

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