sys.modules
に登録しないでモジュールをソースファイルからロードし、そのモジュールを変数にアサインして、そのモジュールの利用をその変数を通してのみの利用に限定したい場合、importlib
のクラスや関数を駆使した下記の方法があるようです。参考リンク先に紹介されていました。モジュール名は識別子として利用できない文字列も付けられるようです。
import importlib.util
from importlib.machinery import SourceFileLoader
loader = SourceFileLoader("<unnamed module>", path="samplemodule.py")
spec = importlib.util.spec_from_loader(loader.name, loader)
mod = importlib.util.module_from_spec(spec)
loader.exec_module(mod)
>>> mod
<module '<unnamed module>' from 'samplemodule.py'>
参考