Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/05/2015, à 18:34

Christian77

[Résolu] chargement (load) d'un document odf avec Python et odfpy

Bonjour,
J'ai écrit un programme (assez long) en Python qui fonctionnait très bien jusqu'à cette semaine.
Le programme fait appel à la bibliothèque odfpy pour ouvrir un fichier .ods (au tout début).

Depuis la mise à jour vers ubuntu 15.04 j'ai un message d'erreur. Voici le code minimal qui provoque l'erreur

from odf.opendocument import load     # pour charger un document
f = open('notes.ods')

L'erreur est
Traceback (most recent call last):
  File "/home/christian/workspace2/D3D5-2015/corrige.py", line 478, in <module>
    feuilleNotes = load("notes.ods")
  File "/usr/lib/python2.7/dist-packages/odf/opendocument.py", line 960, in load
    assert(type(odffile)==type(u"") or 'rb' in repr(odffile) or 'BufferedReader' in repr(odffile)  or 'BytesIO' in repr(odffile))
AssertionError

Note 1 : vous pouvez trouver la bibli à cette adresse https://pypi.python.org/pypi/odfpy
Pour l'installer (il faut Python 2.7), après décompression, on exécute en 'sudo' dans une console

sudo python setup.py install

Note 2 : tous les exemples trouvés sur internet avec odfpy qui fonctionnaient avant, ne fonctionnent plus !!!

Note 3 : J'ai réinstallé un Ubuntu 14.04 LTS sur un autre ordinateur avec Python 2.7, Libreoffice 4.2.8.2 et la bibliothèque odfpy.
Le code précédent fonctionne bien !

Merci de votre aide

Dernière modification par Christian77 (Le 09/05/2015, à 15:32)


5 portables (HP - LDLC - Dell) sous Ubuntu 18.04 et quelle satisfaction !

Hors ligne

#2 Le 03/05/2015, à 07:55

pingouinux

Re : [Résolu] chargement (load) d'un document odf avec Python et odfpy

Bonjour,
As-tu essayé en installant directement le paquet python-odf (dans le dépôt universe) ?
Les versions de python sont-elles identiques dans les deux cas, et est-ce le même fichier notes.ods que tu essayes d'ouvrir ?

Hors ligne

#3 Le 03/05/2015, à 12:02

Christian77

Re : [Résolu] chargement (load) d'un document odf avec Python et odfpy

Bonjour,
J'ai vérifié et python-odf est déjà installé avec python-odf-tools d'ailleurs.
C'est le même fichier "notes.ods" que j'essaie d'ouvrir.
Dans mes essais ratés, c'est python 2.7.9 que j'utilise alors qu'avec l'autre ordinateur (le vieux) c'est le python 2.7 récupéré sur les dépôts qui est en version 2.7.6.
J'ai réinstallé odypy qui n'a pas bouger en version depuis un an environ.
Je pense à accuser soit un fichier en rapport avec python installé avec la version 15.04 d'Ubuntu ou
soit la dernière version de LibreOffice.
Je suis un peu désespéré car j'ai plus de 3500 documents à traiter avec mon programme qui fonctionnait très bien jusqu'à la semaine dernière...
Merci de ton aide
PS : les messages d'erreur sont les mêmes sous IDLE que sous Eclipse que j'utilise.

Dernière modification par Christian77 (Le 03/05/2015, à 12:04)


5 portables (HP - LDLC - Dell) sous Ubuntu 18.04 et quelle satisfaction !

Hors ligne

#4 Le 03/05/2015, à 12:30

pingouinux

Re : [Résolu] chargement (load) d'un document odf avec Python et odfpy

Je ne peux pas tester, étant en Python 2.7.6.
Tu parles de la version de LibreOffice, mais ton programme Python utilise-t-il les librairies de LibreOffice ?

Ajouté :
J'ai installé python-odf, pour voir la ligne correspondant à ton message d'erreur

File "/usr/lib/python2.7/dist-packages/odf/opendocument.py", line 960, in load
    assert(type(odffile)==type(u"") or 'rb' in repr(odffile) or 'BufferedReader' in repr(odffile)  or 'BytesIO' in repr(odffile))

mais je n'ai pas cette ligne. Tu peux éventuellement regarder dans ce fichier.

Dernière modification par pingouinux (Le 03/05/2015, à 12:45)

Hors ligne

#5 Le 03/05/2015, à 15:04

pingouinux

Re : [Résolu] chargement (load) d'un document odf avec Python et odfpy

Vraiment à tout hasard, tu peux essayer d'ajouter ce paramètre dans le open

f = open('notes.ods','rb')

Hors ligne

#6 Le 08/05/2015, à 18:10

Christian77

Re : [Résolu] chargement (load) d'un document odf avec Python et odfpy

Bonjour et merci pingouinux.
Le problème venait effectivement de python-odf.
Après de nombreux essais (réécriture en Python 3.4, désinstallation de 3.4 (peut-être en conflit avec 2.7), réinstallation de opfpy 0.9.6 et j'en passe) je suis aperçu que :

- l'installation de odfpy 0.9.6 avec la commande précédente

sudo python setup.py install

avait eu lieu dans
/usr/local/lib/python2.7/dist-packages/odf/ et l'appel de cette biblio avait lieu ailleurs.
- J'ai donc recopié le contenu avec sudo dans
/usr/lib/python2.7/dist-packages/odf/ (qui était vide...)
et tout s'est remis à fonctionner.

En résumé, un programme écrit en Python 2.7 ne fonctionne pas avec odfpy 1.2x (python-odf) installé avec Ubuntu 15.04.
Il faut désinstaller les 4 paquets python-odf-doc, python-odf, python-odf-tools, python3-odf (si deux versions de Python) et remettre la version 0.9.6 dans le bon répertoire.
désormais tout fonctionne bien

Dernière modification par Christian77 (Le 09/05/2015, à 15:31)


5 portables (HP - LDLC - Dell) sous Ubuntu 18.04 et quelle satisfaction !

Hors ligne