Il peut être utilisé lorsque vous souhaitez importer dynamiquement en raison de circonstances particulières.
https://docs.python.org/ja/3/library/importlib.html
Tout est écrit dans le document, mais c'est un peu difficile à comprendre, donc si vous voulez l'utiliser rapidement, je pense que c'est une bonne idée de mettre le code suivant au début.
import importlib.machinery
import sys
class PackageFinder(importlib.machinery.PathFinder):
@classmethod
def find_spec(cls, fullname, path=None, target=None):
if not path:
path = []
#Spécifiez la liste des répertoires que vous souhaitez trouver dans le chemin
path.append("/path/to/package/root")
return importlib.machinery.PathFinder.find_spec(fullname, path, target)
sys.meta_path.append(PackageFinder)
En changeant dynamiquement le chemin du code ci-dessus, vous pouvez également faire des choses acrobatiques telles que la lecture synchrone d'un répertoire spécifique, le téléchargement et la lecture d'un répertoire distant (recommandé). Je n'en ai pas).
De plus, il y a aussi sys.path_hooks, donc cela semble être utilisé lorsque vous souhaitez personnaliser le comportement de l'importation de module qui lui correspond en prenant le chemin comme argument au lieu d'ajouter le chemin.
Recommended Posts