#1 Le 02/05/2015, à 17: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, à 14:32)
5 portables (HP - LDLC - Dell) sous Ubuntu 18.04 et quelle satisfaction !
Hors ligne
#2 Le 03/05/2015, à 06: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, à 11: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, à 11:04)
5 portables (HP - LDLC - Dell) sous Ubuntu 18.04 et quelle satisfaction !
Hors ligne
#4 Le 03/05/2015, à 11: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, à 11:45)
Hors ligne
#5 Le 03/05/2015, à 14: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, à 17: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, à 14:31)
5 portables (HP - LDLC - Dell) sous Ubuntu 18.04 et quelle satisfaction !
Hors ligne