(Les informations suivantes s’appliquent uniquement aux installations Anaconda. L’idée de base s’applique à toute installation python, mais les façons précises d’aborder le problème sont différentes.)
Supposons que vous écriviez un module Python appelé, disons, coolscript
qui a toutes sortes de fonctions cool que vous avez écrites. Peut-être que vous l’avez enregistré sur le bureau de votre ordinateur. Peut-être qu’ensuite vous allez dans Anaconda Navigator, lancez Spyder ou un autre programme dans Anconda, et essayez d’importer ces fonctions avec une ligne de code comme,
from coolscript import *
Mais, hélas, vous recevez une erreur :
ModuleNotFoundError: No module named 'coolscript'
Beaucoup de choses peuvent causer cela, mais c’est peut-être parce que le répertoire dans lequel réside coolscipt.py
ne fait pas partie du PYTHONPATH
, c’est à dire…e., l’ensemble des répertoires de fichiers dans lesquels Python recherche les fichiers dont il a besoin. Découvrons ce qu’est notre PYTHONPATH
et voyons s’il contient notre script. Lancez une invite Anaconda. Vous pouvez le faire directement à partir du menu Démarrer sous Windows ou de l’application Launcher sous MacOS, mais une autre façon de le faire est de lancer le navigateur Anaconda et de lancer un terminal comme dans la capture d’écran ci-dessous :
Maintenant, exécutez cette commande pour voir votre PYTHONPATH
:
python -c "import sys; print('\n'.join(sys.path))"
Dans mon cas, j’obtiens le résultat suivant sur une machine personnelle sous Windows avec une installation fraîche d’Anaconda3 :
Sans que mon script soit dans l’un de ces dossiers (ou leurs sous-dossiers), il ne sera pas trouvé par python à moins que vous n’indiquiez explicitement le chemin complet lorsque vous l’appelez depuis python (ou si vous démarrez python dans le répertoire dans lequel réside le fichier). Idéalement, nous voulons éviter ce problème en installant correctement les modules. Si c’est quelqu’un d’autre qui a écrit le module de code, la meilleure façon de le faire est de l’installer en utilisant conda
ou, si cela n’est pas possible, en utilisant pip
ou un fichier setup.py
. Ce sont également les meilleures pratiques pour son propre code.
Cependant, il est parfois utile d’avoir un « répertoire de travail » pratique pour le code temporaire ou inachevé, et vous pouvez ne pas vouloir faire naviguer python vers ce répertoire chaque fois que vous appelez le code. Une façon de résoudre ce problème est d’ajouter votre répertoire préféré à votre PYTHONPATH
.
Si nous voulons ajouter temporairement un répertoire à notre python, nous pourrions simplement exécuter les commandes suivantes dans le terminal python que nous utilisons pour exécuter le script :
import syssys.path.append(r'/path/to/my/package')
où « /path/to/my/package » devrait être changé en chemin d’accès au dossier contenant votre fichier de script python. Cette approche ne fonctionnerait que jusqu’à ce que nous fermions cette instance du compilateur python ; nous devrions la relancer chaque fois que nous démarrons une ligne de commande python.
Si nous voulons ajouter de manière plus permanente un dossier à notre PYTHONPATH
, nous pouvons le faire en créant un fichier .pth
dans le répertoire site-packages
. Dans la capture d’écran ci-dessus, remarquez le dossier site-packages
. Chaque installation d’Anaconda devrait avoir un dossier de ce nom. Créez un nouveau fichier texte dans ce répertoire, en le nommant de manière à ce qu’il ait l’extension .pth
(par exemple, un fichier nommé extrapythonfolders.pth
serait parfait). Dans ce fichier texte, vous pouvez lister les répertoires que vous souhaitez inclure dans votre PYTHONPATH
, un par ligne. Par exemple, sur une machine Windows, je peux ajouter une ligne qui se lit C:\myscripts
. Sauvegardez le fichier avec ces nouveaux emplacements, puis essayez à nouveau d’exécuter la commande suivante sur l’invite d’Anaconda :
python -c "import sys; print('\n'.join(sys.path))"
Vous devriez voir que vos nouveaux répertoires sont maintenant inclus (vous devrez peut-être redémarrer Anaconda pour que cela fonctionne dans tous ses logiciels, cependant). Vous devriez maintenant être en mesure d’importer des modules ou d’exécuter du code à partir de ce répertoire, indépendamment de l’endroit où vous démarrez python dans votre structure de fichiers.