web-dev-qa-db-fra.com

Comment vérifier si un module python a été importé?

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.

59
yuval

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.

82
Martijn Pieters

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
15
Haresh Shyara

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
14
morvan68

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()):
3
HansW