Maison  >  Article  >  développement back-end  >  Comment Python initialise-t-il sys.path ?

Comment Python initialise-t-il sys.path ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-02 17:23:02722parcourir

How Does Python Initialize sys.path?

Plonger dans l'initialisation de sys.path en Python

Comprendre le processus d'initialisation de sys.path de Python est crucial pour comprendre le chemin de recherche des modules de Python . Malgré l'idée fausse selon laquelle PYTHONPATH pilote exclusivement cette initialisation, l'algorithme complexe de Python prend en compte diverses autres sources.

Les étapes suivantes expliquent ce processus :

Initialisation de sys.executable, sys.exec_prefix et sys .prefix

  • Python identifie méticuleusement son emplacement en fonction des informations du système d'exploitation, reflétant le chemin de l'exécutable physique réel dans sys.executable.
  • Un fichier pyvenv.cfg dans le fichier exécutable Le répertoire ou un niveau supérieur contient des options de configuration influençant sys.prefix. Notamment, la configuration de la maison peut remplacer le répertoire par défaut contenant sys.executable.
  • Si la variable d'environnement PYTHONHOME existe, elle remplace les valeurs sys.prefix et sys.exec_prefix précédemment définies.
  • Échec du conditions ci-dessus, ces valeurs sont dérivées en parcourant vers l'arrière à partir de sys.executable, en recherchant des liens symboliques ou des fichiers de repère pour établir le répertoire et son préfixe.

Détermination de sys.path

  • Les valeurs initiales de sys.path comprennent :

    • Le répertoire contenant le script en cours d'exécution.
    • Le contenu de PYTHONPATH, s'il est défini.
    • Le chemin d'accès au fichier zip Python.
  • Les clés de registre sous Windows, si elles sont présentes, sont lues pour des chemins supplémentaires.
  • Les valeurs au moment de la compilation de PYTHONPATH sont incluses.
  • Sur Mac et Linux, la valeur de sys.exec_prefix est ajoutée.

Actions post-initialisation

  • Le module du site est chargé, ajoutant dynamiquement chemins basés sur sys.prefix et sys.exec_prefix.
  • Les fichiers de configuration sont examinés à partir des chemins ajoutés pour d'autres modifications de sys.path.

Pièges et notes importantes

  • Réglage incorrect de home = dans pyvenv.cfg peut conduire à une valeur sys.prefix nulle, provoquant un retour aux valeurs par défaut précompilées.
  • La présence d'une variable d'environnement PYTHONHOME peut perturber les paramètres de pyvenv.cfg sous Linux et Mac.
  • L'absence de PYTHONHOME sous Windows, ainsi qu'un pyvenv.cfg manquant home = , peuvent entraîner une valeur de secours sys.prefix.
  • Si sys.prefix reste non résolu pendant sys.path Lors de l'initialisation, Windows se lance dans une recherche détaillée des fichiers de repère pour le déterminer.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn