[Résolu][Python] Bibliothèque de fonctions dans un document
Modérateur : Vilains modOOs
Règles du forum
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 !
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 !
-
- SuppOOrter
- Messages : 1398
- Inscription : 18 janv. 2008 09:02
- Localisation : Val de Marne
[Résolu][Python] Bibliothèque de fonctions dans un document
Bonjour,
Après la résolution de l'utilisation d'une bibliothèque de fonctions, je cherche maintenant à intégrer cette bibliothèque dans un document, de manière à ce que l'utilisateur n'ait pas à bricoler dans son dossier personnel.
Je pensais à créer un dossier pythonpass dans le dossier scripts\python\pythonpath, mais ça aurait été trop facile !
Je ne trouve aucune littérature sur le sujet (ni anglophone, ni francophone..)
Quelqu'un a-t-il un document dur le sujet ?
en attendant je vais essayer de récupérer le chemin du script appelant et l'ajouter au PYTHONPATH, sans grand espoir..
Cordialement et bonne fin de semaine....
Après la résolution de l'utilisation d'une bibliothèque de fonctions, je cherche maintenant à intégrer cette bibliothèque dans un document, de manière à ce que l'utilisateur n'ait pas à bricoler dans son dossier personnel.
Je pensais à créer un dossier pythonpass dans le dossier scripts\python\pythonpath, mais ça aurait été trop facile !
Je ne trouve aucune littérature sur le sujet (ni anglophone, ni francophone..)
Quelqu'un a-t-il un document dur le sujet ?
en attendant je vais essayer de récupérer le chemin du script appelant et l'ajouter au PYTHONPATH, sans grand espoir..
Cordialement et bonne fin de semaine....
Dernière modification par jeanmi2403 le 07 nov. 2016 17:34, modifié 1 fois.
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
-
- SuppOOrter
- Messages : 1214
- Inscription : 06 avr. 2016 07:26
Re: [Python] Bibliothèque de fonctions dans un document
Bonjour Jean-Michel,
Le répertoire "pythonpath" ne fonctionnera pas dans un document car l'url vers ce répertoire est propre à OpenOffice/LibreOffice et ne peut être comprise par python.
Je ne vois pas de solution simple pour utiliser une libraire externe qui serait incorporée à un document.
Le plus simple est encore de placer les fonctions requises directement dans le module qui les utilise (par exemple dans une classe dédiée), même si ce n'est sans doute pas le plus satisfaisant...
Le répertoire "pythonpath" ne fonctionnera pas dans un document car l'url vers ce répertoire est propre à OpenOffice/LibreOffice et ne peut être comprise par python.
Je ne vois pas de solution simple pour utiliser une libraire externe qui serait incorporée à un document.
Le plus simple est encore de placer les fonctions requises directement dans le module qui les utilise (par exemple dans une classe dédiée), même si ce n'est sans doute pas le plus satisfaisant...
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
-
- SuppOOrter
- Messages : 1398
- Inscription : 18 janv. 2008 09:02
- Localisation : Val de Marne
Re: [Python] Bibliothèque de fonctions dans un document
Bonsoir Hubert,
J'en déduis qu'un programme python dans un document LibO est nécessairement monofichier ?
Bonne soirée.
Je m'en doutais. Difficile d'accéder à quelque chose d'encapsulé.Hubert Lambert a écrit :Le répertoire "pythonpath" ne fonctionnera pas dans un document car l'url vers ce répertoire est propre à OpenOffice/LibreOffice et ne peut être comprise par python.
.
Par "module", je suppose que tu entends "fichier" ?Le plus simple est encore de placer les fonctions requises directement dans le module qui les utilise
J'en déduis qu'un programme python dans un document LibO est nécessairement monofichier ?
Bonne soirée.
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
-
- SuppOOrter
- Messages : 1214
- Inscription : 06 avr. 2016 07:26
Re: [Python] Bibliothèque de fonctions dans un document
Un fichier python oui.jeanmi2403 a écrit :Par "module", je suppose que tu entends "fichier" ?
On peut voir la chose ainsi en effet. Si des scripts python se trouvent incorporés à un document dans des fichiers séparés, ils ne pourront malheureusement pas fonctionner ensemble via le système d'import natif. Il est sans doute possible d'utiliser le mécanisme d'invocation propre à uno, mais l'intérêt est a prior nul entre deux scripts python...jeanmi2403 a écrit :J'en déduis qu'un programme python dans un document LibO est nécessairement monofichier ?
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
-
- SuppOOrter
- Messages : 1214
- Inscription : 06 avr. 2016 07:26
Re: [Python] Bibliothèque de fonctions dans un document
Un truc qui semble fonctionner, même si cela paraît très peu orthodoxe et mériterait d'être solidement testé : utiliser le module stantard "zipimport", qui permet d'importer un module depuis un fichier zip. Comme les fichiers odf sont justement des zip, il suffit de passer le chemin complet vers la bibliothèque souhaitée dans le fichier (il faut que ledit fichier soit préalablement sauvegardé).
Exemple (voir fichier joint) :
Cordialement.
Exemple (voir fichier joint) :
Code : Tout sélectionner
import zipimport
import unohelper
doc = XSCRIPTCONTEXT.getDocument()
url = unohelper.fileUrlToSystemPath('{}/{}'.format(doc.URL,'Scripts/python'))
outils = zipimport.zipimporter(url).load_module('outils')
def testoutils(event=None):
outils.msgbox("Importation de la bibliothèque <outils> réussie !")
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
-
- SuppOOrter
- Messages : 1398
- Inscription : 18 janv. 2008 09:02
- Localisation : Val de Marne
Re: [Python] Bibliothèque de fonctions dans un document
Bonsoir Hubert,
Comme disaient mes élèves : "Trop fort !"
Bien joué et merci, je vais tester...
Bon dimanche,
Comme disaient mes élèves : "Trop fort !"
Bien joué et merci, je vais tester...
Bon dimanche,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
-
- SuppOOrter
- Messages : 1214
- Inscription : 06 avr. 2016 07:26
Re: [Python] Bibliothèque de fonctions dans un document
J'ai amélioré le code en tenant compte du fait que le module zipimport est utilisé implicitement par python (ce qui supprime au passage les erreurs avec AOOo lorsqu'une url contient des caractères accentués) :
Code : Tout sélectionner
import sys
import unohelper
doc = XSCRIPTCONTEXT.getDocument()
url = unohelper.fileUrlToSystemPath('{}/{}'.format(doc.URL,'Scripts/python/lib'))
if not url in sys.path:
sys.path.insert(0, url)
import outils
def testoutils(event=None):
outils.msgbox(u"Importation de la bibliothèque <lib/outils> réussie !")
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
-
- SuppOOrter
- Messages : 1398
- Inscription : 18 janv. 2008 09:02
- Localisation : Val de Marne
Re: [Python] Bibliothèque de fonctions dans un document
Bonjour,
Cordialement,
Je suppose que la source documentaire est ici : https://docs.python.org/2/library/zipimport.html ?Hubert Lambert a écrit : le module zipimport est utilisé implicitement par python [/code]
Cordialement,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
-
- SuppOOrter
- Messages : 1214
- Inscription : 06 avr. 2016 07:26
Re: [Python] Bibliothèque de fonctions dans un document
En effet.
Et petite précision en relisant cette doc :
Et petite précision en relisant cette doc :
si tu comptes vraiment utiliser ce mécanisme, il y aura un intérêt à placer la version compilée de ta bibliothèque (.pyc) à côté de la version source (.py).pydoc a écrit :[...] if a ZIP archive doesn’t contain .pyc files, importing may be rather slow
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
▼ | « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
-
- SuppOOrter
- Messages : 1398
- Inscription : 18 janv. 2008 09:02
- Localisation : Val de Marne
Re: [Python] Bibliothèque de fonctions dans un document
Ok.
Trouvée dans __pycache__
[Résolu]
Merci,
Trouvée dans __pycache__
[Résolu]
Merci,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX