您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python中是否可以保证模块文件名中扩展名的导入顺序?

Python中是否可以保证模块文件名中扩展名的导入顺序?

FWIW,我找不到参考说明,必须在py文件之前加载扩展,因此将其作为实现细节可能更安全(除非有人提供参考)。即使此细节对于所有版本都稳定到至少2.7。

导入模块时,它将首先在缓存中查找(即sys.modules),如果尚未在其中,sys.meta_path则使用from中的查找器。通常,sys.Meta_pathBuiltinImporterFrozenImporter和组成PathFinder,其中PathFinder负责在磁盘/ python-path上查找模块。

PathFinder提供了一些缓存功能,以加速查找,但它基本上代表所述搜索sys.path_hooks-概述可以在例如发现PEP 302

通常情况下,sys.path_hooks包括zipimporter,这使压缩文件的导入可能,一个包裹FileFinder,这是整个进口机械的工作马。

FileFinder尝试不同的出就足够了(即.so.py.pyc)在给定的顺序,这是通过建立_get_supported_file_loaders()-method

def _get_supported_file_loaders():
    """Returns a list of file-based module loaders.
    Each item is a tuple (loader, suffixes).
    """
    extensions = ExtensionFileLoader, _imp.extension_suffixes()
    source = SourceFileLoader, SOURCE_SUFFIXES
    bytecode = SourcelessFileLoader, BYTECODE_SUFFIXES
    return [extensions, source, bytecode]

可以看到:

显然,sys.Meta_path以及sys.path_hooks可以以某种方式进行操纵,这将建立负载优先级的任意顺序。

作为个人说明:我将尽量避免py和so / pyd文件彼此相邻的情况。

python 2022/1/1 18:33:20 有479人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶