首页 > 解决方案 > 我们如何获得一个忽略缺失库的迭代器,例如 `crypt`?

问题描述

如果我们使用 pip 安装stdlib_list并执行以下命令,则会收到错误消息:

import importlib
import itertools as itts
from stdlib_list import stdlib_list

def get_modules():
    module_names = iter(stdlib_list("3.7"))
    libs         = map(importlib.import_module, module_names)
    builtins     = dir(__builtins__)
    return  itts.chain(libs, builtins)

modules = get_modules()
for module in modules:
    pass

错误信息:

ImportError: The crypt module is not supported on Windows

如何创建一个静默移动到下一个结果的迭代器?

标签: pythonpython-3.x

解决方案


你可以赶上ImportError

def try_import_module(name):
    try:
        return importlib.import_module(name)
    except ImportError:
        return None

然后:

def get_modules():
    module_names = stdlib_list("3.7")
    libs         = filter(None, map(try_import_module, module_names))
    builtins     = dir(__builtins__)
    return itts.chain(libs, builtins)

推荐阅读