Comment vérifier si j'ai importé un module quelque part dans le code?
if not has_imported("sys"):
print 'you have not imported sys'
La raison pour laquelle je voudrais vérifier si j'ai déjà importé un module, c'est parce que j'ai un module que je ne veux pas importer, car parfois cela gâche mon programme.
Testez le nom du module dans le dictionnaire sys.modules
:
import sys
modulename = 'datetime'
if modulename not in sys.modules:
print 'You have not imported the {} module'.format(modulename)
De la documenation:
Il s’agit d’un dictionnaire qui mappe les noms de modules sur des modules déjà chargés.
utilisez sys.modules pour vérifier si un module a été importé (j'utilise unicodedata par exemple):
>>> import sys
>>> 'unicodedata' in sys.modules
False
>>> import unicodedata
>>> 'unicodedata' in sys.modules
True
Aux réponses de sys.modules acceptées, j'ajouterais une mise en garde à propos du changement de nom des modules lors de l'importation:
>>> import sys
>>> import datetime as dt
>>> 'dt' in sys.modules
False
>>> 'datetime' in sys.modules
True
sys.modules
Contient tous les modules utilisés n'importe où dans l'instance actuelle de l'interpréteur et apparaît donc s'il est importé dans un autre Python.
dir()
vérifie si le nom a été défini dans l'espace de nom actuel.
La combinaison des 2 est plus sûre que chaque élément séparé et fonctionne tant que vous n'avez pas défini vous-même un copy
.
if ('copy' in sys.modules) and ('copy' in dir()):