I tried the following code,I am trying to add a custom MetaPathFinder to listen for module loading
<code>import importlib.util
import sys
from importlib.abc import MetaPathFinder
class ModuleLoadListener(MetaPathFinder):
def find_spec(self, fullname, path, target=None):
for finder in sys.meta_path:
if finder == self:
continue
spec = finder.find_spec(fullname, path, target)
if spec is not None:
spec.loader = CustomLoader(spec.loader)
return spec
return None
class CustomLoader(importlib.abc.Loader):
def __init__(self, loader):
self.loader = loader
def create_module(self, spec):
return self.loader.create_module(spec)
def exec_module(self, module):
return self.loader.exec_module(module)
sys.meta_path.insert(0, ModuleLoadListener())
import requests
</code>
<code>import importlib.util
import sys
from importlib.abc import MetaPathFinder
class ModuleLoadListener(MetaPathFinder):
def find_spec(self, fullname, path, target=None):
for finder in sys.meta_path:
if finder == self:
continue
spec = finder.find_spec(fullname, path, target)
if spec is not None:
spec.loader = CustomLoader(spec.loader)
return spec
return None
class CustomLoader(importlib.abc.Loader):
def __init__(self, loader):
self.loader = loader
def create_module(self, spec):
return self.loader.create_module(spec)
def exec_module(self, module):
return self.loader.exec_module(module)
sys.meta_path.insert(0, ModuleLoadListener())
import requests
</code>
import importlib.util
import sys
from importlib.abc import MetaPathFinder
class ModuleLoadListener(MetaPathFinder):
def find_spec(self, fullname, path, target=None):
for finder in sys.meta_path:
if finder == self:
continue
spec = finder.find_spec(fullname, path, target)
if spec is not None:
spec.loader = CustomLoader(spec.loader)
return spec
return None
class CustomLoader(importlib.abc.Loader):
def __init__(self, loader):
self.loader = loader
def create_module(self, spec):
return self.loader.create_module(spec)
def exec_module(self, module):
return self.loader.exec_module(module)
sys.meta_path.insert(0, ModuleLoadListener())
import requests
But he had an abnormality,But there are some modules that do not report errors when imported
<code> File "D:appdeveloperpy3python3.11Libsite-packagesrequests-2.31.0-py3.11.eggrequestsutils.py", line 63, in <module>
DEFAULT_CA_BUNDLE_PATH = certs.where()
^^^^^^^^^^^^^
File "D:appdeveloperpy3python3.11Libsite-packagescertifi-2023.11.17-py3.11.eggcertificore.py", line 37, in where
_CACERT_PATH = str(_CACERT_CTX.__enter__())
^^^^^^^^^^^^^^^^^^^^^^^
File "D:appdeveloperpy3python3.11Libcontextlib.py", line 137, in __enter__
return next(self.gen)
^^^^^^^^^^^^^^
File "D:appdeveloperpy3python3.11Libimportlibresources_common.py", line 80, in _tempfile
os.write(fd, reader())
^^^^^^^^
File "D:appdeveloperpy3python3.11Libimportlibresourcesabc.py", line 76, in read_bytes
with self.open('rb') as strm:
^^^^^^^^^^^^^^^
File "D:appdeveloperpy3python3.11Libimportlibresources_adapters.py", line 141, in open
raise FileNotFoundError("Can't open orphan path")
FileNotFoundError: Can't open orphan path
</code>
<code> File "D:appdeveloperpy3python3.11Libsite-packagesrequests-2.31.0-py3.11.eggrequestsutils.py", line 63, in <module>
DEFAULT_CA_BUNDLE_PATH = certs.where()
^^^^^^^^^^^^^
File "D:appdeveloperpy3python3.11Libsite-packagescertifi-2023.11.17-py3.11.eggcertificore.py", line 37, in where
_CACERT_PATH = str(_CACERT_CTX.__enter__())
^^^^^^^^^^^^^^^^^^^^^^^
File "D:appdeveloperpy3python3.11Libcontextlib.py", line 137, in __enter__
return next(self.gen)
^^^^^^^^^^^^^^
File "D:appdeveloperpy3python3.11Libimportlibresources_common.py", line 80, in _tempfile
os.write(fd, reader())
^^^^^^^^
File "D:appdeveloperpy3python3.11Libimportlibresourcesabc.py", line 76, in read_bytes
with self.open('rb') as strm:
^^^^^^^^^^^^^^^
File "D:appdeveloperpy3python3.11Libimportlibresources_adapters.py", line 141, in open
raise FileNotFoundError("Can't open orphan path")
FileNotFoundError: Can't open orphan path
</code>
File "D:appdeveloperpy3python3.11Libsite-packagesrequests-2.31.0-py3.11.eggrequestsutils.py", line 63, in <module>
DEFAULT_CA_BUNDLE_PATH = certs.where()
^^^^^^^^^^^^^
File "D:appdeveloperpy3python3.11Libsite-packagescertifi-2023.11.17-py3.11.eggcertificore.py", line 37, in where
_CACERT_PATH = str(_CACERT_CTX.__enter__())
^^^^^^^^^^^^^^^^^^^^^^^
File "D:appdeveloperpy3python3.11Libcontextlib.py", line 137, in __enter__
return next(self.gen)
^^^^^^^^^^^^^^
File "D:appdeveloperpy3python3.11Libimportlibresources_common.py", line 80, in _tempfile
os.write(fd, reader())
^^^^^^^^
File "D:appdeveloperpy3python3.11Libimportlibresourcesabc.py", line 76, in read_bytes
with self.open('rb') as strm:
^^^^^^^^^^^^^^^
File "D:appdeveloperpy3python3.11Libimportlibresources_adapters.py", line 141, in open
raise FileNotFoundError("Can't open orphan path")
FileNotFoundError: Can't open orphan path
Am I doing this right?