[Résolu][Python] Utilisation des bibliothèques

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
xr13
NOOuvel adepte
NOOuvel adepte
Messages : 24
Inscription : 03 oct. 2017 18:01

[Résolu][Python] Utilisation des bibliothèques

Message par xr13 »


La modération vous a écrit: Titre original modifié : [Python] Utilisation des librairies Python
Evitez les termes anglais. Une librairie est un lieu où on achète des livres.

Bonjour

J'arrive maintenant à connecter Python et Calc. Par contre, je n'arrive pas à charger les librairies Python comme Numpy ou Scipy.

J'ai ajouté les définitions suivantes

Code : Tout sélectionner

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import sys
sys.path.append("/usr/lib/python2.7/dist-packages") #  Using ~ for home directory does not work!
import numpy as np

def Reverse(LaChaine):
    return LaChaine[::-1]
    
def Mxa(x, p, L):
    x1=np.zeros(20)   #pour test sans utilité particulière
    return p*x*(L-x)/2.0
J'obtiens un message (assez long) :

Code : Tout sélectionner

Erreur d'exécution BASIC.
Une exception s'est produite : 
Type: com.sun.star.script.provider.ScriptFrameworkErrorException
Message: <class 'ImportError'>: cannot import name 'multiarray' (or 'type_check.*' is unknown)
  File "/opt/libreoffice5.3/program/pythonscript.py", line 998, in getScript
    mod = self.provCtx.getModuleByUrl( fileUri )
  File "/opt/libreoffice5.3/program/pythonscript.py", line 458, in getModuleByUrl
    exec(code, entry.module.__dict__)
  File "vnd.sun.star.tdoc:/7/Scripts/python/MesFonctions.py", line 5, in <module>
  File "/opt/libreoffice5.3/program/uno.py", line 347, in _uno_import
    return _builtin_import(name, *optargs, **kwargs)
  File "/usr/lib/python2.7/dist-packages/numpy/__init__.py", line 180, in <module>
    from . import add_newdocs
  File "/opt/libreoffice5.3/program/uno.py", line 347, in _uno_import
    return _builtin_import(name, *optargs, **kwargs)
  File "/usr/lib/python2.7/dist-packages/numpy/add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "/opt/libreoffice5.3/program/uno.py", line 347, in _uno_import
    return _builtin_import(name, *optargs, **kwargs)
  File "/usr/lib/python2.7/dist-packages/numpy/lib/__init__.py", line 8, in <module>
    from .type_check import *
  File "/opt/libreoffice5.3/program/uno.py", line 425, in _uno_import
    raise uno_import_exc
  File "/opt/libreoffice5.3/program/uno.py", line 347, in _uno_import
    return _builtin_import(name, *optargs, **kwargs)
  File "/usr/lib/python2.7/dist-packages/numpy/lib/type_check.py", line 11, in <module>
    import numpy.core.numeric as _nx
  File "/opt/libreoffice5.3/program/uno.py", line 347, in _uno_import
    return _builtin_import(name, *optargs, **kwargs)
  File "/usr/lib/python2.7/dist-packages/numpy/core/__init__.py", line 14, in <module>
    from . import multiarray
Est-ce la bonne méthode ?
D'avance merci pour toute aide
Xavier
Dernière modification par xr13 le 07 oct. 2017 10:51, modifié 1 fois.
Libre office 6.2.5.2 sous Ubuntu 18.04
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 629
Inscription : 09 août 2017 22:15

Re: [Python] Utilisation des librairies Python

Message par Jurassic Pork »

hello,
comme je vois que tu es sous ubuntu 16.04, moi j'ai une version LibreOffice 5.4.0.3 sous Lubuntu 16.04 j'ai fait un essai.
Tout d'abord LibreOffice utilise du Python 3 pas du python 2 !
Pour installer "proprement" des modules python 3, il faut mieux utiliser des utilitaires comme pip3
pour installer pip3 sous ubuntu : sudo apt install python3-pip
ensuite pour installer numpy il suffit de faire : pip3 install numpy
normalement tu devrais alors pouvoir utiliser le module numpy dans LibreOffice.
APSO console_numpy.png
Ami calmant, J.P
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
xr13
NOOuvel adepte
NOOuvel adepte
Messages : 24
Inscription : 03 oct. 2017 18:01

Re: [Python] Utilisation des bibliothèques

Message par xr13 »

Bonsoir

Grand merci pour le coup de main, par contre çà plante encore un peu.

j'ai bien installé le paquet numpy via pip3,

Code : Tout sélectionner

Python 3.5.2 (default, Sep 14 2017, 22:51:06) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> numpy.version.version
'1.13.3'
>>> 
Par contre je ne suis pas certain qu'il soit vu par libreoffice ? Pip3 m'indique qu'ils sont installés dans "~/.local/lib/python3.5/site-packages"

J'ai le message suivant :

Code : Tout sélectionner

<class 'ImportError'>: 
Importing the multiarray numpy extension module failed.  Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try `git clean -xdf` (removes all
files not under version control).  Otherwise reinstall numpy.
Le terminal que tu affiches via APSO est fourni dans l'installation d'APSO ou c'est autre chose ?

Je viens aussi de tenter : sudo apt-get install python3-numpy mais sans effet...

D'avance merci
Xavier
Libre office 6.2.5.2 sous Ubuntu 18.04
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 629
Inscription : 09 août 2017 22:15

Re: [Python] Utilisation des bibliothèques

Message par Jurassic Pork »

hello,
la console APSO que tu vois dans mon message est obtenue en cliquant sur interpréteur Python qui se trouve dans le menu qui apparaît quand tu cliques sur le bouton Menu (version 1.1 de APSO)
APSO console_Menu.png
j'ai fait différents essais chez moi numpy fonctionne :
1 - Dans la console APSO :
APSO console_test_numpy.png
et aussi dans un script python exécuté comme macro :

Code : Tout sélectionner

import numpy as np
def test_numpy():
    desktop = XSCRIPTCONTEXT.getDesktop()
    calc = desktop.getCurrentComponent()
    sheet = calc.getSheets().getByIndex(0) #1ere feuille du classeur
    v = np.array([9,10])
    w = np.array([11, 12])
    # Inner product of vectors; both produce 219
    sheet.getCellByPosition(0,0).Value = v.dot(w).item()
    sheet.getCellByPosition(0,1).Value = np.dot(v, w).item()
le .item() que l'on voit dans les dernières lignes permet de "caster" le type numpy.float64 inconnu de uno vers un type natif de python que uno connait sinon erreur d'exécution.

numpy est installé dans le même répertoire que toi : "~/.local/lib/python3.5/site-packages". Ton message d'erreur n'est pas qu'il ne trouve pas le module mais plutôt un problème de contenu de numpy par rapport à ton python.
Je n'ai pas la même version de libreOffice (5.4.0.3 chez moi) que toi mais je ne sais pas si cela a un rapport avec ton problème.

Le message d'erreur d'import que tu nous montres apparaît où ?

Ami calmant, J.P
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
xr13
NOOuvel adepte
NOOuvel adepte
Messages : 24
Inscription : 03 oct. 2017 18:01

Re: [Python] Utilisation des bibliothèques

Message par xr13 »

Bonjour

Merci pour ta réponse, pour le coup je suis scotché, tu l'as trouvé où la 1.1 d'APSOen ?

J'ai regardé le : h**ps://extensions.libreoffice.org/exte ... for-python ou le h**ps://gitlab.com/jmzambon/apso la version proposée est la 1.0.2 au maximum.

Je vais ré-installé une version plus récente de Loo

Le message apparaît à l'ouverture du fichier test.ods, j'ai inclus la macro dans le fichier et j'ai juste rajouté le chargement de la bibliothèque avec une utilisation inutile.

Code : Tout sélectionner

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
#import sys
#sys.path.append("/usr/lib/python3/dist-packages") #  Using ~ for home directory does not work!
import numpy as np

def Reverse(LaChaine):
    return LaChaine[::-1]
    
def Mxa(x, p, L):
    x1=np.zeros(20)    
    return p*x*(L-x)/2.0
test.ods
D'avance merci
Xavier
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre office 6.2.5.2 sous Ubuntu 18.04
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 629
Inscription : 09 août 2017 22:15

Re: [Python] Utilisation des bibliothèques

Message par Jurassic Pork »

hello,
xr13 a écrit :Bonjour
Merci pour ta réponse, pour le coup je suis scotché, tu l'as trouvé où la 1.1 d'APSOen ?
elle n'est pas bien loin, c'est Hubert qui l' a créée et elle est ici
Avec la console, on devrait y voir un peu plus clair sur la version de python que tu as.
et ta fonction MXA fonctionne chez moi :
Lo_python_numpy.png
Ami calmant, J.P
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
xr13
NOOuvel adepte
NOOuvel adepte
Messages : 24
Inscription : 03 oct. 2017 18:01

Re: [Python] Utilisation des bibliothèques

Message par xr13 »

Bonjour

Pas de chances pour moi, ma version de Python3 est 3.5.2 et celle de LibreOffice est la 3.5.4. Visiblement ce n'est pas toujours une bonne idée de modifier le numéro de version de python, car ubuntu l'utilise ? Si tu as un avis ?

Est ce la source principale de mon problème ?

Voici le retour sous Apso Terminal :

Code : Tout sélectionner

[APSO] PYTHON console (charset: utf-8)
3.5.4 (default, Aug 22 2017, 21:08:58) 
[GCC 4.8.2 20140120 (Red Hat 4.8.2-15)]
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/opt/libreoffice5.3/program/uno.py", line 347, in _uno_import
    return _builtin_import(name, *optargs, **kwargs)
  File "/home/xavier/.local/lib/python3.5/site-packages/numpy/__init__.py", line 142, in <module>
    from . import add_newdocs
  File "/opt/libreoffice5.3/program/uno.py", line 347, in _uno_import
    return _builtin_import(name, *optargs, **kwargs)
  File "/home/xavier/.local/lib/python3.5/site-packages/numpy/add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "/opt/libreoffice5.3/program/uno.py", line 347, in _uno_import
    return _builtin_import(name, *optargs, **kwargs)
  File "/home/xavier/.local/lib/python3.5/site-packages/numpy/lib/__init__.py", line 8, in <module>
    from .type_check import *
  File "/opt/libreoffice5.3/program/uno.py", line 425, in _uno_import
    raise uno_import_exc
  File "/opt/libreoffice5.3/program/uno.py", line 347, in _uno_import
    return _builtin_import(name, *optargs, **kwargs)
  File "/home/xavier/.local/lib/python3.5/site-packages/numpy/lib/type_check.py", line 11, in <module>
    import numpy.core.numeric as _nx
  File "/opt/libreoffice5.3/program/uno.py", line 347, in _uno_import
    return _builtin_import(name, *optargs, **kwargs)
  File "/home/xavier/.local/lib/python3.5/site-packages/numpy/core/__init__.py", line 26, in <module>
    raise ImportError(msg)
ImportError: 
Importing the multiarray numpy extension module failed.  Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try `git clean -xdf` (removes all
files not under version control).  Otherwise reinstall numpy.

Original error was: cannot import name 'multiarray'
 (or 'type_check.*' is unknown)
D'avance merci
Xavier
Libre office 6.2.5.2 sous Ubuntu 18.04
xr13
NOOuvel adepte
NOOuvel adepte
Messages : 24
Inscription : 03 oct. 2017 18:01

Re: [Python] Utilisation des bibliothèques

Message par xr13 »

Bonsoir
Je viens de modifier ma version de LibreOffice, pour passer à la 5.4.2.2, par contre le Python est toujours en 5.3.4, donc le problème reste identique ?

Sais tu à quel endroit on peut définir ou modifier cette version sous LIbreOffice ?

D'avance merci
Xavier
Libre office 6.2.5.2 sous Ubuntu 18.04
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 629
Inscription : 09 août 2017 22:15

Re: [Python] Utilisation des bibliothèques

Message par Jurassic Pork »

hello,
voici ce que j'obtiens dans la console APSO lorsque je lance la commande print (sys.path) :
[APSO] PYTHON console (charset: utf-8)
3.5.2 (default, Sep 14 2017, 22:51:06)
[GCC 5.4.0 20160609]
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print (sys.path)
['/usr/lib/libreoffice/program', '/home/jurassic', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/home/jurassic/.local/lib/python3.5/site-packages', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/libreoffice/program', '/home/jurassic/.config/libreoffice/4/user/uno_packages/cache/uno_packages/lu5627kixpaw.tmp_/Grammalecte-fr-v0.5.17.1.oxt/pythonpath', '/home/jurassic/.config/libreoffice/4/user/uno_packages/cache/uno_packages/lu4337dq1j0b.tmp_/apso_v1.1.0.oxt/python/pythonpath']
>>>
Vérifie que dans les chemins, il n'y a pas de fichiers de la version 3.5.4 . Essaie de trouver où cette version se cache :aie: . En tout cas moi quand je tape python3 dans un shell, j'ai bien la même version que celle qu'indique APSO.

Ami calmant, J.P
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
xr13
NOOuvel adepte
NOOuvel adepte
Messages : 24
Inscription : 03 oct. 2017 18:01

Re: [Python] Utilisation des bibliothèques

Message par xr13 »

Bonjour

En console Python3, j'obtiens :

Code : Tout sélectionner

>>> print(sys.path)
['', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/home/xavier/.local/lib/python3.5/site-packages', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages']
Sous Apso, j'ai :

Code : Tout sélectionner

>>> print(sys.path)
['/opt/libreoffice5.4/program/python-core-3.5.0/lib', '/opt/libreoffice5.4/program/python-core-3.5.0/lib/lib-dynload', '/opt/libreoffice5.4/program/python-core-3.5.0/lib/lib-tk', '/opt/libreoffice5.4/program/python-core-3.5.0/lib/site-packages', '/opt/libreoffice5.4/program', '/home/xavier', '/opt/libreoffice5.4/program/python-core-3.5.0/lib/python35.zip', '/opt/libreoffice5.4/program/python-core-3.5.0/lib/python3.5', '/opt/libreoffice5.4/program/python-core-3.5.0/lib/python3.5/plat-linux', '/opt/libreoffice5.4/program/python-core-3.5.0/lib/python3.5/lib-dynload', '/home/xavier/.local/lib/python3.5/site-packages', '/home/xavier/.config/libreoffice/4/user/uno_packages/cache/uno_packages/lu4270ftccik.tmp_/apso_v1.1.0.oxt/python/pythonpath']
>>> 
J'ai bien dans l'idée de placer un

Code : Tout sélectionner

import sys
sys.path.append("path/to/Modules")
en entête des scripts de manière à "imposer" la première définition, mais la commande réalise un ajout et pas une substitution. Tu as une idée de la manière de procéder ?

Par contre, je n'ai aucune idée de l'origine de cette différence de version de Python ?
D'avance merci
Xavier
Libre office 6.2.5.2 sous Ubuntu 18.04
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 629
Inscription : 09 août 2017 22:15

Re: [Python] Utilisation des bibliothèques

Message par Jurassic Pork »

hello,
je ne sais pas comment tu as installé ton Libreoffice mais moi c'est en utilisant Synaptic avec le dépôt ppa-libreoffice :
LibreOffice5-Ubuntu.png
Ami calmant, J.P
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
xr13
NOOuvel adepte
NOOuvel adepte
Messages : 24
Inscription : 03 oct. 2017 18:01

Re: [Python] Utilisation des bibliothèques

Message par xr13 »

Bonjour

En fait j'ai basiquement suivi les conseils ici : https://forum.openoffice.org/fr/forum/v ... 41&t=42220 sur ma première mise à jour, puis https://forum.openoffice.org/fr/forum/v ... 41&t=42344 pour la deuxième.
J'ai privilégié le chargement des tar.gz puis l'installation via dpkg -i *.deb
Je vais refaire par ta méthode
Merci
Xavier
Libre office 6.2.5.2 sous Ubuntu 18.04
xr13
NOOuvel adepte
NOOuvel adepte
Messages : 24
Inscription : 03 oct. 2017 18:01

Re: [Python] Utilisation des bibliothèques

Message par xr13 »

Bonjour

Au top, j'ai ajouté la branche générique : sudo add-apt-repository ppa:libreoffice/ppa puis l'update et l'installation de Libreoffice et sa traduction en français et maintenant tout fonctionne.

Grand merci pour ta patience et ton aide !!!

Xavier
Libre office 6.2.5.2 sous Ubuntu 18.04