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 :

Interfacage Python - Prolog


Sujet :

Interfaçage autre langage Python

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Interfacage Python - Prolog
    Bonsoir,

    Nous avons développé un programme en prolog, et nous souhaiterions l'interfacer avec une base de données Mysql. On nous a conseillé Python pour le faire.

    Nous n'avons pas rencontré de difficultés pour se connecter et dialoguer avec la BD. Cependant nous n'avons pas trouvé de solutions adaptées pour faire appel a nos modules prolog.

    Auriez-vous une solution pour pouvoir faire appel a Prolog depuis Python?

  2. #2
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut [résolu]
    Je cherche à utiliser du code Prolog (une grammaire) depuis un programme en Python. Après quelques recherches, je me suis orienté vers le module pyswip que tu cites.

    J'ai installé Python 2.5.2, SWI-Prolog 5.6.64, et PySwip 0.2.2
    Cependant, j'ai un problème dès lors que je veux utiliser le prolog depuis python.

    Si je tape la commande suivante :

    >>from pyswip import Prolog

    l'interpréteur me répond :

    libpl (shared) not found. Possible reasons:
    1) SWI-Prolog not installed as a shared library.

    Ma question est donc comment installer SWI-Prolog en tant que bibliothèque partagée. Ou plus globalement comment faire fonctionner ce module.

    (PS : je suis sur Ubuntu 8.04)

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Ou sinon, est ce que quelqu'un a une solution pour que je puisse utiliser ma grammaire en Prolog depuis un programme en Python?

  5. #5
    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 La FAQ de PySWIP dit:
    1. Q: When I import PySWIP, I get:

    libpl (shared) not found. Possible reasons:
    1) SWI-Prolog not installed as a shared library. Install SWI-Prolog (5.6.34 works just fine)

    A: If you're on UNIX/Linux, you didn't install SWI-Prolog's shared library (which is NOT the default when you compile the sources yourself, and not installed by default for many distributions such as Debian/Ubuntu. Most probably you'll have to compile SWI-Prolog on your own; see INSTALL.
    C'est pas compliqué si?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Most probably you'll have to compile SWI-Prolog on your own; see INSTALL.
    A priori non, mais le résultat obtenu n'est pas celui escompté.

    J'ai suivi les instructions de la page INSTALL, j'ai ajouté les les options de compilation "--enable-shared" pour l'installer en tant que bibiliothèque partagée.
    J'ai vérifié l'existence de libpl.
    J'ai essayé de l'installé à divers endroits, de changer les droits...

    Mais j'abouti toujours au même résultat...

    libpl (shared) not found. Possible reasons:
    1) SWI-Prolog not installed as a shared library.

  7. #7
    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
    Ben le code qui remonte l'erreur ne fait rien de bien compliqué:

    Code python : 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
    import sys
    
    try:
        from ctypes import *
    except ImportError:
        print>>sys.stderr, "A required module: 'ctypes' not found."
        sys.exit(1)
        
    try:
        if sys.platform[:3] == "win":
            # we're on windows
            _lib = CDLL("libpl.dll")
        else:
            # UNIX-like
            try:
                _lib = CDLL("libpl.so")
            except IndexError:
                # let's try the cwd
                _lib = CDLL("./libpl.so")
        
    except OSError:
        print>>sys.stderr, "libpl (shared) not found. Possible reasons:"
        print>>sys.stderr, "1) SWI-Prolog not installed as a shared library. Install SWI-Prolog (5.6.34 works just fine)"
        sys.exit(1)

    Dans la procédure d'install:

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #  clp library is useful for constraint handling problems, so let's install it too:
    
    $ cd cd packages/clpqr
    $ ./configure --prefix=/usr --enable-shared
    $ make && sudo make install
    
    # Create a soft link:
    
    $ sudo ln -s  /usr/lib/pl-5.6.34/lib/i686-linux/libpl.so.5.6.34 /usr/lib/libpl.so

    Après c'est peut être comme dans les police d'assurance... En tout petit en bas est écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If you get an error, such as "libpl (shared) not found." or "FATAL ERROR: Resource not found" be sure you have installed SWI-Prolog as a share library. Check your default library directory (usually /usr/lib) for libpl.so.
    Que contient le fichier: /etc/ld.so.conf?
    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Je pense avoir trouvé le problème...

    Create a soft link:
    $ sudo ln -s /usr/lib/pl-5.6.34/lib/i686-linux/libpl.so.5.6.34 /usr/lib/libpl.so
    Mon lien était brisé à cause d'une variation du nom d'un répertoire d'une version de Prolog à une autre...
    J'avais changé le numéro de version du répertoire principal, mais je n'avais pas vu que le nom du sous-répertoire avait changé...

    sudo ln -s /usr/lib/pl-5.6.64/lib/x86_64-linux/libpl.so.5.6.64 /usr/lib/libpl.so
    Merci d'avoir passé du temps sur mon problème....

  9. #9
    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
    You're welcome!

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

Discussions similaires

  1. [Python 2.X] erreur lors interfaçage Python / SWI Prolog
    Par Triton972 dans le forum Interfaçage autre langage
    Réponses: 6
    Dernier message: 12/01/2015, 23h57
  2. interfacage robotique python
    Par Galiange dans le forum Déploiement/Installation
    Réponses: 7
    Dernier message: 31/12/2011, 16h49
  3. CORBA & PYTHON
    Par stan91stan dans le forum CORBA
    Réponses: 5
    Dernier message: 10/06/2004, 12h32
  4. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59
  5. prolog et scheme
    Par bourvil dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 30/09/2003, 12h09

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