TL;DR
[^ 1]: Um genau zu sein, auf Mayas Python-Interpreter. [^ 2]: zensiert.
firstimport_hook.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import __builtin__
import types
import copy
import sys
import inspect
# reload()Für Gegenmaßnahmen__import__Speichern Sie nach Bestätigung, dass es sich um eine integrierte Funktion handelt.
if isinstance(__import__, types.BuiltinFunctionType):
_original__import__ = copy.deepcopy(__import__)
#Zum Beispiel, wenn es von einem anderen Modul eingebunden importiert wird
# _original__import__Kann nicht definiert werden, werfen Sie also einen entsprechenden Fehler
elif '_original__import__' not in globals():
raise ImportError('Definition of _original__import__ failed.')
def __get_modulefile_from_load_module():
try:
#Holen Sie sich die Moduldatei zum Lesen
currentframe = inspect.currentframe()
module_file = currentframe.f_back.f_back.f_code.co_filename
finally:
#Entf, um den Referenzzähler zu korrigieren.
del currentframe
return module_file
def print_modulefile_post_first_import(*args, **kwargs):
"""Moduldateien nach dem ersten Import anzeigen"""
#Rufen Sie vor dem Import den Ladestatus des Moduls ab
loaded_module_names = sys.modules.keys()
# __import__Lauf
module = _original__import__(*args, **kwargs)
#Verarbeiten Sie keine Module, die bereits einmal geladen wurden
if module.__name__ in loaded_module_names:
return module
# __file__Zeigen Sie den Pfad des Moduls nicht ohne an
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():
"""Import-Hook aktivieren"""
__builtin__.__import__ = print_modulefile_post_first_import
def disable_import_hook():
"""Import-Hook deaktivieren"""
__builtin__.__import__ = _original__import__
if __name__ == '__main__':
#Import-Hook aktivieren
enable_import_hook()
import json
reload(json)
startup.py
import firstimport_hook
firstimport_hook.enable_import_hook()
Wenn Sie jetzt zum ersten Mal eine Python-Datei importieren, können Sie den Pfad des geladenen Moduls drucken (). Wenn Sie es anschließend ordnungsgemäß an den Server senden, kann es aggregiert werden.
mel? Du weißt nicht ...
Recommended Posts