J'ai besoin de savoir s'il existe un module python, sans l'importer.
Importer quelque chose qui pourrait ne pas exister (pas ce que je veux):
try:
import eggs
except ImportError:
pass
J'ai besoin de savoir s'il existe un module python, sans l'importer.
Importer quelque chose qui pourrait ne pas exister (pas ce que je veux):
try:
import eggs
except ImportError:
pass
Pour vérifier si l'importation peut trouver quelque chose, utilisez imp
import imp
try:
imp.find_module('eggs')
found = True
except ImportError:
found = False
EDIT: comme il a été mentionné, pour trouver des importations pointillées, vous devez faire plus:
import imp
try:
spam_info = imp.find_module('spam')
spam = imp.load_module('spam', *spam_info)
imp.find_module('eggs', spam.__path__) # __path__ is already a list
found = True
except ImportError:
found = False
Utilisez l'une des fonctions de pkgutil, par exemple:
from pkgutil import iter_modules
def module_exists(module_name):
return module_name in [tuple_[1] for tuple_ in iter_modules()]
Comme indiqué dans la documentation j'ai lié ci-dessus, iter_modules()
rendements des tuples de la forme (module_loader, name, ispkg)
. Donc, nous ne se soucient que l'élément à l'index 1, donc l' tuple_[1]
dans ma compréhension de liste.
Le nom de l' tuple_
a été choisi fondée sur la convention de nommage est proposé dans la PEP 8, à savoir que les variables dont les noms correspondent à celle d'un built-in
devrait prendre fin en un seul trait de soulignement pour le distinguer de l' built-in
.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.