Mon code est:
import scriptlib.abc
import scriptlib.xyz
def foo():
... some operations
mais la scriptlib est dans un autre répertoire, je devrai donc l'inclure dans la variable d'environnement "PYTHONPATH".
Y a-t-il un moyen dans lequel je peux d'abord ajouter le répertoire scriptlib dans la variable d'environnement "PYTHONPATH" avant que l'instruction d'importation ne soit exécutée comme ceci:
import sys
sys.path.append('/mypath/scriptlib')
import scriptlib.abc
import scriptlib.xyz
def foo():
... some operations
Si tel est le cas, la valeur est-elle réservée à cette commande ou est-elle globale?
Merci d'avance
Ceci ajoutera un chemin à votre processus/instance Python (c.-à-d. L'exécutable en cours d'exécution). Le chemin ne sera modifié pour aucun autre processus Python en cours d'exécution. Python ne sera pas modifié, et si vous quittez votre programme et que vous le réexécutez, le chemin ne comprendra pas ce que vous avez ajouté auparavant. Ce que vous faites est généralement correct.
set.py:
import sys
sys.path.append("/tmp/TEST")
loop.py
import sys
import time
while True:
print sys.path
time.sleep(1)
lancer: python loop.py &
Cela exécutera loop.py, connecté à votre STDOUT, et continuera à fonctionner en arrière-plan. Vous pouvez ensuite exécuter python set.py
. Chacun a un ensemble différent de variables d'environnement. Notez que la sortie de loop.py
Ne change pas car set.py
Ne modifie pas l'environnement de loop.py
.
ne note sur l'importation
Les importations Python sont dynamiques, comme le reste du langage. Il n'y a pas de lien statique en cours. L'importation est une ligne exécutable, tout comme sys.path.append...
.
Comme indiqué dans la documentation ici .
Aller à Python X.X/Lib
et ajoutez ces lignes au site.py
Là,
import sys
sys.path.append("yourpathstring")
Cela change votre sys.path
pour que sur chaque chargement, il ait cette valeur ..
Comme indiqué ici à propos de site.py
,
Ce module est automatiquement importé lors de l'initialisation. L'importation de ce module ajoutera des chemins spécifiques au site du chemin de recherche du module et ajoutera quelques fonctions intégrées.
Pour d’autres méthodes possibles pour ajouter un chemin à sys.path
voir ces documents