Modifier le chemin Python (Python Path) de manière permanente avec PYTHONPATH
Bien que la modification de sys.path dans un script soit utile pour des changements temporaires, vous souhaiterez peut-être ajouter un répertoire au chemin Python pour toutes vos sessions Python ou pour un projet spécifique sans modifier les scripts individuels. Ceci peut être réalisé en définissant la variable d'environnement PYTHONPATH.
La variable d'environnement PYTHONPATH est une liste de répertoires que Python ajoute à sys.path lorsqu'il démarre.
Pour définir la variable d'environnement PYTHONPATH pour votre session de terminal actuelle, vous pouvez utiliser la commande export.
Supprimons la ligne sys.path.append() de use_custom_module.py et utilisons PYTHONPATH à la place.
Ouvrez use_custom_module.py dans l'éditeur WebIDE et supprimez les lignes suivantes :
## Get the absolute path to the custom modules directory
custom_modules_path = os.path.join(os.path.dirname(__file__), 'my_custom_modules')
## Add the custom modules directory to sys.path
sys.path.append(custom_modules_path)
Le fichier use_custom_module.py devrait maintenant ressembler à ceci :
import sys
import os
## Now you can import my_module
import my_module
message = my_module.greet("LabEx User")
print(message)
## Optional: Print sys.path again to see the added directory
print("\nUpdated sys.path:")
print(sys.path)
Enregistrez le fichier.
Maintenant, essayez d'exécuter le script sans définir PYTHONPATH :
python use_custom_module.py
Vous obtiendrez probablement une erreur ModuleNotFoundError car Python ne peut pas trouver my_module.
Traceback (most recent call last):
File "/home/labex/project/use_custom_module.py", line 5, in <module>
import my_module
ModuleNotFoundError: No module named 'my_module'
Maintenant, définissons la variable d'environnement PYTHONPATH dans le terminal pour inclure notre répertoire de modules personnalisés. Assurez-vous d'être dans le répertoire /home/labex/project.
export PYTHONPATH="/home/labex/project/my_custom_modules:$PYTHONPATH"
Cette commande ajoute /home/labex/project/my_custom_modules au début de la variable PYTHONPATH. Le $PYTHONPATH à la fin garantit que tous les répertoires existants dans PYTHONPATH sont conservés.
Maintenant, exécutez à nouveau le script use_custom_module.py dans la même session de terminal :
python use_custom_module.py
Vous devriez voir la sortie indiquant que le module a été trouvé et exécuté :
Hello, LabEx User from my_module!
Updated sys.path:
['/home/labex/project', '/home/labex/project/my_custom_modules', '/usr/lib/python310.zip', '/usr/lib/python3.10', '/usr/lib/python3.10/lib-dynload', '/home/labex/.local/lib/python3.10/site-packages', '/usr/local/lib/python3.10/dist-packages', '/usr/lib/python3/dist-packages']
Notez que /home/labex/project/my_custom_modules est maintenant inclus dans sys.path car nous avons défini la variable d'environnement PYTHONPATH.
Définir PYTHONPATH dans le terminal en utilisant export n'affecte que la session de terminal actuelle. Pour rendre la modification permanente, vous ajouteriez généralement la commande export au fichier de démarrage de votre shell (par exemple, ~/.bashrc, ~/.zshrc). Cependant, pour ce lab, le fait de le définir dans la session actuelle est suffisant pour démontrer le concept.