Python affiche ModuleNotFoundError
Installer le paquet dans le bon environnement et conserver requirements.txt à jour. Le Python du conteneur ne partage pas les modules de votre ordinateur.
Le Python du conteneur ne partage pas les modules de votre ordinateur. Chaque dépendance doit être déclarée et installée lors du déploiement.
Procédure étape par étape
-
Identifier le nom importé
Le nom utilisé dans import peut différer du paquet pip, par exemple PIL provient de Pillow.
-
Vérifier requirements.txt
Ajoutez le paquet et une version compatible, puis enregistrez le fichier à la racine attendue.
-
Installer avec le bon Python
Sur votre ordinateur, utilisez python -m pip install -r requirements.txt pour éviter d’appeler un autre pip. Sur l’hébergement, cette installation est lancée automatiquement au démarrage du bot.
-
Redémarrer
Confirmez dans la console que l’installation se termine sans erreur avant le lancement du bot.
Installation
python --version
python -m pip install -r requirements.txt
python -m pip check
Exemple de requirements.txt
discord.py>=2.4
python-dotenv>=1.0
aiohttp>=3.9
Comment les modules sont installés
Vous n’avez pas de terminal pour lancer pip vous-même. Au démarrage, la plateforme lit requirements.txt à la racine du bot, ou la liste dependencies de pyproject.toml, et installe les paquets dans un dossier .deps. L’installation est relancée quand ce fichier ou la version de Python change.
Un module installé sur votre ordinateur mais absent de requirements.txt n’existe donc pas sur le serveur. N’envoyez pas vos dossiers venv ou .venv : ils sont liés à votre machine et ne sont pas utilisés. Les commandes du bloc « Installation » servent à tester le projet sur votre ordinateur.
Corriger depuis la console
Quand le bot s’arrête sur cette erreur, la carte « Diagnostic du plantage » de la console affiche « Module Python X manquant ». Le bouton « Installer X » ajoute le paquet à requirements.txt, relance l’installation et redémarre le bot.
Vous pouvez aussi modifier requirements.txt dans l’onglet « Fichiers », une ligne par paquet, puis redémarrer. Si le fichier n’a pas changé mais que l’installation semble incomplète, utilisez « Réinstaller les dépendances » dans l’onglet « Démarrage ».
Vérifier le résultat
Au redémarrage, la console affiche l’installation des dépendances, puis la commande lancée, par exemple $ python -u bot.py. Le correctif est bon quand la ligne ModuleNotFoundError a disparu et que le bot passe en ligne sur Discord. Si une autre erreur de module apparaît, répétez l’opération : Python s’arrête au premier import manquant et n’en signale qu’un à la fois.
Questions fréquentes
Pourquoi ModuleNotFoundError: No module named 'discord' ?
La bibliothèque Discord n’est pas déclarée. Le module importé s’appelle discord, mais le paquet à écrire dans requirements.txt s’appelle discord.py. Ajoutez cette ligne puis redémarrez. La même erreur apparaît quand requirements.txt se trouve dans un sous-dossier au lieu de la racine.
Quel paquet correspond à mon import ?
Le nom diffère pour plusieurs bibliothèques courantes : dotenv vient de python-dotenv, yaml de PyYAML, PIL de Pillow, cv2 de opencv-python et nacl de PyNaCl. En cas de doute, cherchez le nom du module sur pypi.org : la page du paquet indique la ligne à installer.
Le module manquant est un de mes fichiers, que faire ?
No module named 'cogs' ou 'utils' désigne un dossier de votre projet, pas un paquet à installer. Vérifiez dans « Fichiers » qu’il a bien été envoyé et qu’il se trouve à côté du fichier de démarrage. Linux distingue les majuscules : Cogs et cogs sont deux dossiers différents.
Que signifie ERROR: No matching distribution found for ?
pip ne trouve pas le paquet demandé : le nom est mal écrit, la version indiquée n’existe pas, ou elle n’est pas publiée pour la version de Python du bot. Corrigez la ligne dans requirements.txt, retirez une version trop stricte comme ==1.0.0, ou changez la version de Python dans l’onglet « Démarrage ».