TL;DR
[^ 1]: Pour être exact, sur l'interpréteur Python de Maya. [^ 2]: censuré.
firstimport_hook.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import __builtin__
import types
import copy
import sys
import inspect
# reload()Pour les contre-mesures__import__Stocker après avoir confirmé qu'il s'agit de la fonction intégrée.
if isinstance(__import__, types.BuiltinFunctionType):
_original__import__ = copy.deepcopy(__import__)
#Par exemple, s'il est importé accroché par un autre module
# _original__import__Ne peut pas être défini, alors lancez une erreur de manière appropriée
elif '_original__import__' not in globals():
raise ImportError('Definition of _original__import__ failed.')
def __get_modulefile_from_load_module():
try:
#Obtenez le fichier du module à lire
currentframe = inspect.currentframe()
module_file = currentframe.f_back.f_back.f_code.co_filename
finally:
#Suppr pour corriger le nombre de références.
del currentframe
return module_file
def print_modulefile_post_first_import(*args, **kwargs):
"""Afficher les fichiers du module après l'importation initiale"""
#Obtenez le statut de chargement du module avant l'importation
loaded_module_names = sys.modules.keys()
# __import__Courir
module = _original__import__(*args, **kwargs)
#Ne traitez pas les modules qui ont déjà été chargés une fois
if module.__name__ in loaded_module_names:
return module
# __file__Ne pas afficher le chemin du module sans
filepath = getattr(module, '__file__', None)
if filepath:
path_from_load_module = __get_modulefile_from_load_module()
print('%s -> %s' % (path_from_load_module, filepath))
return module
def enable_import_hook():
"""Activer le hook d'importation"""
__builtin__.__import__ = print_modulefile_post_first_import
def disable_import_hook():
"""Désactiver le hook d'importation"""
__builtin__.__import__ = _original__import__
if __name__ == '__main__':
#Activer le hook d'importation
enable_import_hook()
import json
reload(json)
startup.py
import firstimport_hook
firstimport_hook.enable_import_hook()
Désormais, lorsque vous importez un fichier Python pour la première fois, vous pouvez imprimer () le chemin du module chargé. Après cela, si vous l'envoyez au serveur de manière appropriée, il sera possible de l'agréger.
mel? Tu ne sais pas ...
Recommended Posts