总的来说,我认为您的方法看起来不错。我不必担心它是“全局”的,因为重点是要指定您应该处理的路径。在导入逻辑内部移动此测试只会不必要地使其复杂化,因此,由挂钩的实现者来决定。
只是一个小问题,也许您可??以使用sys.path_hooks
?它似乎比“强大”的要少一些sys.Meta_path
sys.path_hooks
是可调用项的列表,将按顺序检查它们以确定它们是否可以处理给定的路径项。可调用对象使用一个参数(路径项)进行调用。如果可调用ImportError
对象无法处理路径项,则必须引发它,如果可以处理路径项,则必须返回一个导入器对象。