You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 
 
 
 
 
 

58 lines
2.1 KiB

  1. sys.path
  2. ========
  3. En Python, il existe une variable ``path`` prédéfinie dans le module ``sys`` qui fonctionne de manière similaire
  4. à la variable d'environnement ``PATH``.
  5. Si j'essaye de l'afficher sur ma machine, voici ce que j'obtiens:
  6. import sys
  7. print(sys.path)
  8. .. code-block:: text
  9. [
  10. "",
  11. "/usr/lib/python3.8",
  12. "/usr/lib/python3.8/lib-dynload",
  13. "/home/dmerej/.local/lib/python3.8/",
  14. "/usr/lib/python3.8/site-packages",
  15. ]
  16. Le résultat dépend:
  17. * du système d'exploitation
  18. * de la façon dont Python a été installé
  19. * et de la présence ou non de certains réportoires.
  20. En fait, ``sys.path`` est construit dynamiquement par l'interpréteur Python au démarrage.
  21. Notez également que ``sys.path`` commence par une chaîne vide. En pratique, cela signifie que le répertoire courant a la priorité sur tout le reste.
  22. Priorité du répertoire courant
  23. ------------------------------
  24. Prenons un exemple. Si vous ouvrez un explorateur de fichiers dans le deuxième
  25. élément de la liste de ``sys.path`` (``/usr/lib/python3.8/`` sur ma machine), vous trouverez
  26. un grand nombre de fichiers Python.
  27. notamment, vous devriez trouver un fichier ``random.py`` dans ce répertoire.
  28. En fait, vous trouverez la plupart des modules de la bibliothèque standard dans
  29. ce répertoire.
  30. Maintenant, imaginons que vous avez un deuxième fichier ``random.py`` dans votre répertoire courant. Finalement, imaginez
  31. que vous lancez un fichier ``foo.py`` contentant ``import random`` dans ce même réportoire.
  32. Et bien, c'est le fichier ``random.py`` de votre répertoire qui sera utilisé, et non celui de la bibliothèque standard!
  33. Permissions des répertoires de sys.path
  34. ---------------------------------------
  35. Un autre aspect notable de ``sys.path`` est qu'il ne contient que deux
  36. répertoires dans lesquels l'utilisateur courant peut potentiellement écrire
  37. : le chemin courant et le chemin dans ``~/.local/lib``. Tous les autres
  38. (``/usr/lib/python3.8/``, etc.) sont des chemins "système" et ne peuvent
  39. être modifiés que par un compte administrateur (avec ``root`` ou ``sudo``, donc).
  40. La situation est semblable sur macOS et Windows.