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

Interfaçage autre langage Python Discussion :

Module swig (.pyd) avec Python/c++


Sujet :

Interfaçage autre langage Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 11
    Points : 12
    Points
    12
    Par défaut Module swig (.pyd) avec Python/c++
    Salut tous le monde,
    Je suis débutant en python/c++ api,
    mon script est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #script.py
     
    import sys
     
    # my module directory
    sys.path.append("C:\Python25\DLLs")
     
    #module is created by swig generator "_SwigModule.pyd
    import SwigModule
    fo = open("foo.txt", "wb")
    fo.write( "test");
    fo.close()
    Par la suite , je veux exécuter ce script par ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     Py_Initialize();
     string *pythonScript = readPythonScript( /*path of my script (script.py)*/path);
     
    if( pythonScript != NULL )
    {
        PyRun_SimpleString(pythonScript->c_str());
     
        delete pythonScript;
    }
     Py_Finalize();
    La fonction readPythonScript est lire notre script à partir le path et l'affecter dans un string.
    Leur définition est :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
     string *readPythonScript( string fileName )
    {
    ifstream pythonFile;
     
    pythonFile.open( fileName.c_str() );
     
    if ( !pythonFile.is_open() ) 
    {
        cout << "Cannot open Python script file, \"" << fileName << "\"!" << endl;
        return NULL;
    }
    else
    {
        // Get the length of the file
        pythonFile.seekg( 0, ios::end );
        int nLength = pythonFile.tellg();
        pythonFile.seekg( 0, ios::beg );
     
        // Allocate  a char buffer for the read.
        char *buffer = new char[nLength];
        memset( buffer, 0, nLength );
     
        // read data as a block:
        pythonFile.read( buffer, nLength );
     
        string *scriptString = new string;
        scriptString->assign( buffer );
     
        delete [] buffer;
        pythonFile.close();
     
        return scriptString;
      }
      }
    Si je commente "import SwigModule", c'est bon,le fichier foo.txt est creé.
    Sinon il peut pas être créé , donc je pense qu'il y a un problème entre le module swig et Python/c++ .
    Svp , aidez moi c'est urgent !

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Je ne connais pas swig, mais j'ai un peu travaillé pour construire un module écrit en C++ qu'un code Python peut importer et utiliser. Voilà mon tuto sur le sujet:

    http://python.jpvweb.com/mesrecettes...ple_python_cpp

    Pour ça, je ne fais qu'utiliser les possibilités d’extension de Python, sans nécessiter de module externe supplémentaire comme swig.

    En espérant que tu y trouves des éléments pour progresser dans ton pb.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Merci tyrtamos , j'ai trouvé la solution;
    Il faut importer notre module "SwigModule" avant l’utiliser ,il suffit d'ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PyObject* pyModule =PyImport_ImportModule("_SwigModule");
    En tout cas merci pour les Cours et tutoriels Python , en particulier j'ai bien aimé : Apprendre à programmer avec Python 3 par Gérard Swinnen

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. importer module perso avec python
    Par rom44 dans le forum Général Python
    Réponses: 4
    Dernier message: 03/08/2011, 12h44
  2. Traitement d'image avec Python sans modules
    Par kevgen dans le forum Général Python
    Réponses: 4
    Dernier message: 23/11/2010, 00h02
  3. module tarfile avec python 2.2
    Par jhonnyBravo dans le forum Général Python
    Réponses: 4
    Dernier message: 14/05/2007, 13h01
  4. création de base mySQL avec python
    Par preacher_man dans le forum Bibliothèques tierces
    Réponses: 7
    Dernier message: 23/06/2006, 19h38
  5. Les 128 derniers bits d'un fichier en ligne avec Python ?
    Par ecocentric dans le forum Réseau/Web
    Réponses: 7
    Dernier message: 26/09/2005, 12h40

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