Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Membre à l'essai
    Inscrit en
    novembre 2009
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : novembre 2009
    Messages : 93
    Points : 24
    Points
    24

    Par défaut easy_install ujson : gcc fail

    J'ignore si c'est le bon endroit où poster.

    J'ai besoin d'installer ujson sur Mandriva 2011. Ça plante.

    Code :
    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
    # easy_install ujson
    Searching for ujson
    Reading http://pypi.python.org/simple/ujson/
    Reading https://github.com/jskorpan/ultrajson
    Reading http://www.esn.me
    Reading https://github.com/esnme/ultrajson
    Reading http://github.com/esnme/ultrajson
    Best match: ujson 1.18
    Downloading
    http://pypi.python.org/packages/source/u/ujson/ujson-1.18.zip#md5=8d033858770ff2222a001ee1fcd0ee15
    Processing ujson-1.18.zip
    Writing /tmp/easy_install-Ef8w3R/ujson-1.18/setup.cfg
    Running ujson-1.18/setup.py -q bdist_egg --dist-dir
    /tmp/easy_install-Ef8w3R/ujson-1.18/egg-dist-tmp-ipbdRm
    ./python/objToJSON.c: In function ‘objToJSON’:
    ./python/objToJSON.c:695:3: attention : initialization from incompatible
    pointer type [enabled by default]
    ./python/objToJSON.c:695:3: attention : (near initialization for
    ‘encoder.beginTypeContext) [enabled by default]
    ./python/objToJSON.c:706:3: attention : initialization from incompatible
    pointer type [enabled by default]
    ./python/objToJSON.c:706:3: attention : (near initialization for
    ‘encoder.releaseObject) [enabled by default]
    build/temp.linux-i686-2.7/./lib/ultrajsondec.o: In function
    `decode_numeric':
    /tmp/easy_install-Ef8w3R/ujson-1.18/./lib/ultrajsondec.c:279: undefined
    reference to `pow'
    collect2: ld a retourné 1 code d'état d'exécution
    error: Setup script exited with error: command 'gcc' failed with exit
    status 1
    Il paraît qu'il faut ajouter -lm ou quelque chose comme ça mais je ne programme pas à ce niveau.
    Quelqu'un peut-il m'aider ?
    Merci d'avance,

  2. #2
    Expert Confirmé Sénior
    Avatar de tyrtamos
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 2 333
    Points : 4 200
    Points
    4 200
    Billets dans le blog
    1

    Par défaut

    Bonjour,

    Juste une idée: je ne connais pas ce module, mais dans son readme, la méthode d'installation recommandée est:

    en console sous root faire (dans le répertoire du logiciel téléchargé) :
    Code :
    python setup.py build install
    Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos...
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Membre Expert

    Homme Profil pro Bastien Montagne
    Diverses et multiples
    Inscrit en
    mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Nom : Homme Bastien Montagne
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : mai 2008
    Messages : 662
    Points : 1 254
    Points
    1 254

    Par défaut

    -lm est une option du compilateur (de l’éditeur de liens, en fait) lui indiquant d’ajouter la bibliothèque libm à celles dans lesquelles il doit rechercher les items (ici, la fonction pow()) inconnus.

    Le problème étant que easy_install ne semble pas offrir de moyen simple de passer une option de compilation…

    Normalement, il devrait y avoir un fichier Setup dans ujson-1.18. Y repérer la ligne contenant "ultrajsondec.c" et lui rajouter à la fin "-lm"?

    NOTE*: Suggestion "à l’aveugle", en m’appuyant juste sur la doc. Jamais utilisé easy_install ni distutils, en fait…
    Incantation : Méchant forum, arrête de transformer toutes mes espaces insécables en astérisques

  4. #4
    Membre à l'essai
    Inscrit en
    novembre 2009
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : novembre 2009
    Messages : 93
    Points : 24
    Points
    24

    Par défaut

    Merci pour vos réponses...

    J'ai essayé build install -> même problème.

    Quant à ajouter -lm dans le fichier setup.p, il n'y a que ça de dispo :

    Code :
    1
    2
    3
    module1 = Extension('ujson', sources = ['./python/ujson.c',
    './python/objToJSON.c', './python/JSONtoObj.c', './lib/ultrajsonenc.c',
    './lib/ultrajsondec.c'], include_dirs = ['./python', './lib'])
    Ça me paraît difficile...

    Autre(s) idée(s) ?

  5. #5
    Expert Confirmé Sénior
    Avatar de tyrtamos
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 2 333
    Points : 4 200
    Points
    4 200
    Billets dans le blog
    1

    Par défaut

    Autre idée. Lorsqu'on veut intégrer un nouveau module avec de la compilation, il est en général nécessaire d'installer un paquet de développement de type "python-dev" qui contient les fichiers source en C nécessaires. Mais je ne connais pas mandriva.
    Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos...
    Mes recettes python: http://www.jpvweb.com

  6. #6
    Membre Expert

    Homme Profil pro Bastien Montagne
    Diverses et multiples
    Inscrit en
    mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Nom : Homme Bastien Montagne
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : mai 2008
    Messages : 662
    Points : 1 254
    Points
    1 254

    Par défaut

    Je ne pense pas que le problème soit le manque de paquet -dev, ici (normalement, dans ce cas, ça coincerait au pre-processing, en ne trouvant pas certains #include, alors que là c’est le linking qui bloque).

    Peut-être remplacer la ligne

    Code :
    1
    2
    3
    module1 = Extension('ujson',
                        sources = ['./python/ujson.c', './python/objToJSON.c', './python/JSONtoObj.c', './lib/ultrajsonenc.c', './lib/ultrajsondec.c'],
                        include_dirs = ['./python', './lib'])
    par

    Code :
    1
    2
    3
    module1 = Extension('ujson',
                        sources = ['./python/ujson.c', './python/objToJSON.c', './python/JSONtoObj.c', './lib/ultrajsonenc.c', './lib/ultrajsondec.c'],
                        include_dirs = ['./python', './lib'], libraries=['m'])
    dans setup.py?
    Incantation : Méchant forum, arrête de transformer toutes mes espaces insécables en astérisques

  7. #7
    Membre à l'essai
    Inscrit en
    novembre 2009
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : novembre 2009
    Messages : 93
    Points : 24
    Points
    24

    Par défaut

    python-devel est déjà installé.

    Effectivement, ajouter libraries=['m'] a résolu le problème.

    Merci !!

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •