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 08/05/2020, à 15:48

xr13

[Python] PYTHONPATH

Bonjour

J'ai finalement résolu mon problème avant d'avoir posé ma question. Mais je ne comprends pas bien le mécanisme associé.

J'ai un script Python qui fonctionne bien depuis Spyder ou ligne de commande depuis un terminal, soit la fonction "test.py" :

#!/usr/bin/python
#-*- Encoding: Utf-8 -*-
f1 = open("./test.txt", 'w\n')
f1.write("essai")
f1.close()

Ensuite en Basic sous LibreOffice, j'ai en rapide le code qui appelle ce script

sRemp = "/home/toto/Documents"
sTempF1="bash -c 'cd "& chr$(34) & sRep & chr$(34)  & " && ./test.py'"
shell(sTempF1, 10)

La manip fonctionne correctement, par contre, si je veux appeler une fonction personnelle dans une librairie "fonc.py" par exemple

def f(x):
    return x/1.5

Je suis obligé de modifier mon code de la manière suivante :

#!/usr/bin/python
#-*- Encoding: Utf-8 -*-
import sys
sys.path.append('/home/toto/Librairies/Python') #### AJOUT ####
import fonc as F
f1 = open("./test.txt", 'w\n')
f1.write("essai")
f1.write("{}".format(F.f(40)))
f1.close()

Sans l'ajout #### AJOUT ####, mon script fonctionne uniquement en ligne de commande dans le terminal ou sous Spyder mais par un appel via LibreOffice, impossible.

Si je comprends bien le mécanisme, il s'agit d'un process qui est lancé en mémoire, mais visiblement il n'hérite pas des paramétrages du PYTHONPATH.

Est ce qu'il y a quelque chose de mieux à régler pour éviter ce code supplémentaire ou une explication plus claire que celle que je viens de fournir ?

D'avance merci
Xavier

Dernière modification par xr13 (Le 08/05/2020, à 16:20)

Hors ligne

#2 Le 08/05/2020, à 16:59

Vobul

Re : [Python] PYTHONPATH

Y'a quoi dans ~/Librairies/Python ? Ton code à toi ?

Si tu mets ton code à toi dans un dossier random, c'est normal que python ne le trouve pas. Si tu veux éviter ça, fais un package et installe-le localement pour qu'il soit dispo partout.


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#3 Le 08/05/2020, à 19:30

xr13

Re : [Python] PYTHONPATH

Salut Vobul

Il y a __init__.py et le fonc.py dont je parle au dessus dans la description.

En fait sous Spyder le PYTHONPATH de l'éditeur pointe sur ~/Librairies/Python
Dans le terminal le PYTHONPATH contient bien le ~/Librairies/Python

C'est le truc qui m'échappe c'est comment paramétrer ce canal de communication provisoire pour paramétrer le PYTHONPATH comme dans le terminal

D'avance merci
Xavier

Dernière modification par xr13 (Le 08/05/2020, à 19:37)

Hors ligne

#4 Le 08/05/2020, à 19:33

Vobul

Re : [Python] PYTHONPATH


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#5 Le 08/05/2020, à 19:41

xr13

Re : [Python] PYTHONPATH

Sauf erreur, ce paramétrage sert à programmer des macros qui sont intégrées/appelées dans LibreOffice ou OpenOffice. Et je crois, mais je n'en suis pas sûr que LibreOffice utilise son propre environnement Python qui est différent de celui du système.

J'ai eu le même problème pour lancer un script Python depuis un script Python, j'étais confronté à la même situation.

Xavier

Hors ligne