Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Bibliothèques tierces
Bibliothèques tierces Forum d'entraide pour les autres bibliothèques non présentes dans la distribution standard de Python
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 20/04/2012, 16h39   #1
Chello
Membre à l'essai
 
Inscription : novembre 2009
Messages : 91
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 91
Points : 21
Points : 21
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,
Chello est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2012, 17h28   #2
tyrtamos
Expert Confirmé
 
Avatar de tyrtamos
 
Inscription : décembre 2007
Messages : 1 777
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 1 777
Points : 3 049
Points : 3 049
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
tyrtamos est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2012, 17h41   #3
mont29
Membre Expert
 
Homme Bastien Montagne
Diverses et multiples
Inscription : mai 2008
Messages : 620
Détails du profil
Informations personnelles :
Nom : Homme Bastien Montagne
Localisation : France

Informations professionnelles :
Activité : Diverses et multiples

Informations forums :
Inscription : mai 2008
Messages : 620
Points : 1 032
Points : 1 032
-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
mont29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2012, 19h39   #4
Chello
Membre à l'essai
 
Inscription : novembre 2009
Messages : 91
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 91
Points : 21
Points : 21
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) ?
Chello est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2012, 20h23   #5
tyrtamos
Expert Confirmé
 
Avatar de tyrtamos
 
Inscription : décembre 2007
Messages : 1 777
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 1 777
Points : 3 049
Points : 3 049
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
tyrtamos est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2012, 23h52   #6
mont29
Membre Expert
 
Homme Bastien Montagne
Diverses et multiples
Inscription : mai 2008
Messages : 620
Détails du profil
Informations personnelles :
Nom : Homme Bastien Montagne
Localisation : France

Informations professionnelles :
Activité : Diverses et multiples

Informations forums :
Inscription : mai 2008
Messages : 620
Points : 1 032
Points : 1 032
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
mont29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2012, 09h03   #7
Chello
Membre à l'essai
 
Inscription : novembre 2009
Messages : 91
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 91
Points : 21
Points : 21
python-devel est déjà installé.

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

Merci !!
Chello est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h50.


 
 
 
 
Partenaires

Hébergement Web