web-dev-qa-db-fra.com

Comment python trouve-t-il un fichier de module si l'instruction d'importation ne contient que le nom de fichier?

Partout je vois du code Python qui importe des modules en utilisant import sys ou import mymodule

Comment l'interprète trouve-t-il le bon fichier si aucun répertoire ou chemin n'est fourni?

48
Asciiom

http://docs.python.org/3/tutorial/modules.html#the-module-search-path

6.1.2. Le chemin de recherche du module

Lorsqu'un module nommé spam est importé, l'interpréteur recherche d'abord un module intégré portant ce nom. S'il ne le trouve pas, il recherche ensuite un fichier nommé spam.py dans une liste de répertoires donnée par la variable sys.path. sys.path est initialisé à partir de ces emplacements:

  • Le répertoire contenant le script d'entrée (ou le répertoire actuel lorsqu'aucun fichier n'est spécifié).
  • PYTHONPATH (une liste de noms de répertoire, avec la même syntaxe que la variable shell PATH).
  • La valeur par défaut dépendante de l'installation.

Remarque: Sur les systèmes de fichiers prenant en charge les liens symboliques, le répertoire contenant le script d'entrée est calculé une fois que le lien symbolique a été suivi. En d'autres termes, le répertoire contenant le lien symbolique n'est pas ajouté au chemin de recherche du module.

Après l’initialisation, les programmes Python peuvent modifier sys.path. Le répertoire contenant le script en cours d'exécution est placé au début du chemin de recherche, devant le chemin de la bibliothèque standard. Cela signifie que les scripts de ce répertoire seront chargés à la place des modules du même nom dans le répertoire de la bibliothèque. Ceci est une erreur sauf si le remplacement est prévu. Voir la section Modules standard pour plus d'informations.

Pour plus d'informations sur les "paramètres spécifiques à l'installation", voir la documentation sur le module site .

57
dm03514

De plus, vous pouvez voir quel est le chemin actuel en utilisant le module sys

import sys
print(sys.path)
22
reptilicus

Il utilise PYTHONPATH , défini en tant que variable d'environnement, pour rechercher des packages (dossiers contenant des fichiers __init__.py) et des modules (ou, si déjà chargé, extrait l'objet de module de sys.modules).

7
Silas Ray

Python a une variable de chemin identique à celle que vous avez dans votre terminal. Python recherche les modules dans les dossiers de ce chemin ou dans le dossier où se trouve votre programme.

0
alestanis