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?
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 variablesys.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 shellPATH
).- 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
.
De plus, vous pouvez voir quel est le chemin actuel en utilisant le module sys
import sys
print(sys.path)
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
).
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.