Você pode tentar substituir a função __builtins__.__import__
(que é chamada por declarações de importação) pelo seu próprio código. Você pode usar a função imp.load_module
para carregar o arquivo py / pyc / pyo.
Aqui está uma versão bem simples:
import sys
import imp
real_import = __builtins__.__import__
def pyc_only_import(name, globals = globals(), locals = locals(), fromlist = [], level = 0):
pycname = name + ".pyc"
modfile = open(pycname)
return imp.load_module(name, modfile, pycname, (".pyc", "rb", 2))
__builtins__.__import__ = pyc_only_import
import hello
Isso está longe de ser uma implementação completa de __import__
, mas funciona se houver um arquivo hello.pyc no diretório de trabalho atual.