Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Déploiement/Installation
Déploiement/Installation Forum d'entraide sur le déploiement d'applications et sur l'installation/compilation de bibliothèques
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 04/01/2012, 10h41   #1
Glorfindel555
Invité de passage
 
Inscription : janvier 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 18
Points : 1
Points : 1
Par défaut Problème d'importation Sax2

Bonjour,
Je suis sur mac et cela fait 2 semaines que je cherche à importer le module Sax2 du pack xml de python (à la fois sur 2.7 et 3.2).

je tape :
Code :
from xml.dom.ext.reader import Sax2
et je reçois ce message d'erreur sur les 2 versions :
Code :
ImportError: No module named ext.reader
A priori, xml est installé étant donné que quand je tape "import xml" il le récupère comme il faut.

Quelqu'un aurai une solution pour régler ce problème en passant par le terminal (UNIX) ou en installant un fichier.

Merci d'avance
Glorfindel555 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 14h32   #2
Pymento
Membre confirmé
 
Avatar de Pymento
 
Homme
Ingé. Info.
Inscription : janvier 2008
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 25
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingé. Info.

Informations forums :
Inscription : janvier 2008
Messages : 360
Points : 296
Points : 296
logiquement c'est
Et sax2 est en fait la version 2 de la lib sax
__________________
Memento Quia Pulvis Es, Et In Pulverem ReverteriS
Pymento est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 09h15   #3
Glorfindel555
Invité de passage
 
Inscription : janvier 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 18
Points : 1
Points : 1
Donc normalement si j'utilise sax je doit pouvoir utiliser mon script tel quel ou est ce qu'il faut que je change des choses ?

En bref : est ce que l'utilisation de Sax est la même que Sax2 ?
Glorfindel555 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 10h17   #4
Pymento
Membre confirmé
 
Avatar de Pymento
 
Homme
Ingé. Info.
Inscription : janvier 2008
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 25
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingé. Info.

Informations forums :
Inscription : janvier 2008
Messages : 360
Points : 296
Points : 296
En prenant en compte les fonctions deprecated et nouvelles, mais tu dois pouvoir t'y retrouver facilement. Après le mieux c'est de le lancer avec l'import de sax, (en ayant pris soin de le mettre à jour bien sur) et de laisser ton python t'indiquer gentiment où ça foire !
__________________
Memento Quia Pulvis Es, Et In Pulverem ReverteriS
Pymento est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 16h50   #5
Glorfindel555
Invité de passage
 
Inscription : janvier 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 18
Points : 1
Points : 1
J'ai laissé python me trouver où ça va pas avec important juste sax. Il comprend pas Sax2. J'ai vraiment la sensation que ce script n'est pas finit (c'est pas à moi c'est un site qui l'a mis à disposition pour fouiller dans leur base^^).

Si il n'est effectivement pas finit, Comment le finir^^?

Je te l'envoie tel quel (je t'ai mais l'endroit où ça merde en commentaire) :

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import urllib2
import sys
from xml.dom.ext.reader import Sax2
from xml.dom.NodeFilter import NodeFilter
from xml import xpath
# ------------------ FUNCTIONS ------------------
 
class PsicquicService:
    def __init__(self, name, restUrl):
        self.name = name
        self.restUrl = restUrl
def readURL(url):
    try:
        fileHandle = urllib2.urlopen(url)
        content = fileHandle.read()
        fileHandle.close()
    except IOError:
        print 'Cannot open URL' % url
        content = ''
    return content
 
 
def readActiveServicesFromRegistry():
    registryActiveUrl = 'http://www.ebi.ac.uk/Tools/webservices/psicquic/registry/registry?action=ACTIVE&format=xml'
    content = readURL(registryActiveUrl)
 
    ###################C'est à cet endroit là que ça merde. Il compile la fonction mais quand je la lance avec les commandes du bas, ça merde
 
    reader = Sax2.Reader()
    doc = reader.fromString(content)
    serviceNodes = xpath.Evaluate('service', doc.documentElement)
    services = []
    for serviceNode in serviceNodes:
        name = serviceNode.getElementsByTagName('name')[0].firstChild.nodeValue
        restUrl = serviceNode.getElementsByTagName('restUrl')[0].firstChild.nodeValue
        service = PsicquicService(name, restUrl)
        services.append(service)
    return services
 
 
def getXrefByDatabase(line, database):
   fields = line.split('|')
   for field in fields:
       parts = field.split(':')
       db = parts[0]
       value = parts[1].split('(')[0]
       if database == db:
           return value
   else:
    # if no db found, return the first field
        return fields[0]
 
 
def queryPsicquic(psicquicRestUrl, query, offset, maxResults):
    psicquicUrl = psicquicRestUrl + 'query/' + query + '?firstResult=' + str(offset) + '&maxResults=' + str(maxResults);
    print '\t\tURL: ' + psicquicUrl
    psicquicResultLines = readURL(psicquicUrl).splitlines()
    for line in psicquicResultLines:
        cols = line.split('\t')
        print '\t' + getXrefByDatabase(cols[0], 'uniprotkb') + ' interacts with ' + getXrefByDatabase(cols[1], 'uniprotkb')
 
# -----------------------------------------------------
 
query = 'BBC1'
 
 
services = readActiveServicesFromRegistry()
 
for service in services:
    print 'Service: ' + service.name + ' ================================================================== '
    queryPsicquic(service.restUrl, query, 0, 200)
    print '\n'
Glorfindel555 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 17h14   #6
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 702
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 702
Points : 4 534
Points : 4 534
Salut

Quelques recherches sur Google laissent penser que le Sax2 du module xml.dom.ext.reader est installé avec PyXML qui n'est plus maintenu.

Questions:
  1. Vous souhaitez installer un package qui dépend de cette bibliothèque?
  2. Vous voulez utiliser l'API Sax pour un nouveau développement?

Bon courage,
- W
__________________
Architectures Post-Modernes
wiztricks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 18h35   #7
Glorfindel555
Invité de passage
 
Inscription : janvier 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 18
Points : 1
Points : 1
Je connais pas trop tout ce qui est package de python (le fonctionnement). En fait on m'a demandé d'automatiser le recherche sur cette base de donnée (c'est un stage de master^^). Le plus simple pour moi c'est d'utiliser ce script (faire un programme java c'est trop long...)

1. Installer un package dépendant de la bibliothèque ça signifierai quoi ?
2. J'ai pas prévu de faire d'autres programme python pendant mon stage donc normalement c'est à usage unique

Il manquerai quoi concrètement pour que le programme fonctionne ?
Glorfindel555 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 19h47   #8
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 702
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 702
Points : 4 534
Points : 4 534
Salut,

Citation:
Envoyé par Glorfindel555 Voir le message
Il manquerai quoi concrètement pour que le programme fonctionne ?
Est ce que c'est un script que vous avez écrit?

Sinon, la chose "fonctionne" quelque part et "utilise" une version de Python peut être ancienne et des bibliothèques externes qui vont avec.
Si oui, pourquoi utiliser un SAX2 autre que celui qui vient avec Python via import xml.sax?

- W
__________________
Architectures Post-Modernes
wiztricks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 21h08   #9
Glorfindel555
Invité de passage
 
Inscription : janvier 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 18
Points : 1
Points : 1
Non justement c'est pas moi qui l'ai fait. Je t'avais marqué que c'est ceux qui s'occupe de la base qui ont mis ce script à disposition pour interroger leur base.

Voilà la page : http://code.google.com/p/psicquic/wi...honCodeSamples

Ils parlent un accès REST. Je sais pas ce que c'est.

Sinon il parlent nul part de package spéciaux (à part PyXML) donc je pense pas qu'il y ai des choses à ajouter au fonctionnement. Et le truc c'est que quand j'importe ext.reader il le trouve pas et quand j'importe tout XML, il le trouve pas non plus.

J'ai vu sur un exemple d'utilisation qu'autour de la ligne avec sax2 il y avais des lignes avec des fonctions comme create_parse() qui vient des outils sax de XML.

T'en pense quoi ?
Glorfindel555 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2012, 14h56   #10
wiztricks
Expert Confirmé Sénior
 
Inscription : juin 2008
Messages : 3 702
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 3 702
Points : 4 534
Points : 4 534
Salut,

Citation:
Envoyé par Glorfindel555 Voir le message
T'en pense quoi ?
Je ne connais pas ce logiciels mais après le parcours en diagonale du site, c'est une application client-serveur développée en Java sur des services Web (ici est REST) => possibilité d'y interfacer des clients Python ou Perl.

La page : http://code.google.com/p/psicquic/wi...honCodeSamples montre des exemples Python mais je n'ai rien trouvé sur les pré-requis côté Python pour les faire fonctionner.

Il n'est pas exclu qu'ils aient été écrits il y a fort longtemps et que personne ne se soit préoccupé de les mettre à jour dans une version "courante".

C'est frustrant, mais ce n'est pas très grave car REST sont des requêtes HTTP accompagnées de documents XML (i.e. des fichiers "texte") que vous pouvez analyser ou construire vous même ou en passant par la bibliothèque de votre choix.

Dans le cas particulier de l'exemple, ils utilisent sax2 et xpath pour rechercher dans le document retourné les "nodes" "service" et y rechercher la définition des tags "nom" et "restUrl".

Que faire?
1. Récupérez le document XML et sauvez le dans un fichier,
2. Jouez avec la bibliothèque XML livrée avec la version de Python utilisée pour analyser le document et y récupérer les valeurs que vous souhaitez.
3. Intégrer les modifications à l'exemple pour le faire fonctionner.

Ce qui fera au moins trois sujets de discussion en fonction des difficultés que vous allez rencontrer

nota pour 2, Python vient depuis la version 2.5 avec une bibliothèque xml appelée etree (import xml.etree) qui a de nombreux exemples et tutorials sur effbot. A utiliser si vous n'avez pas de bonne raison pour utiliser autre chose.
Heu, "l'exemple" ne marche pas n'est pas une "bonne raison": cela ne fait que "compliquer"(*) le démarrage du temps passé à vous approprier un peu les différentes technos à utiliser pour écrire votre code.
(*) vous ne maîtrisez pas encore ces technos et en plus le point d'entrée qu'on vous propose est "buggy"...

En recherchant dans les posts que j'ai commis sur le sujet, prenez le temps de lire le topic. Cela fait la même chose.

Bon courage,
- W
__________________
Architectures Post-Modernes
wiztricks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 17h00   #11
Glorfindel555
Invité de passage
 
Inscription : janvier 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 18
Points : 1
Points : 1
J'ai utilisé un autre langage pour exécuter le script (j'ai tout traduit)

Merci quand même pour tes suggestions, c'est vraiment sympas^^
Glorfindel555 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h23.


 
 
 
 
Partenaires

Hébergement Web