On Wed, Jan 27, 2021 at 1:16 AM Steven D'Aprano <st...@pearwood.info> wrote: > Right. This is (I think) Steve's point: the list is inaccurate, because > the existence of 'winsound' in the stdlib_module_names doesn't mean that > the module 'winsound' exists.
This point is addressed by the definition of the list: sys.stdlib_module_names documentation. "It is the same on all platforms. Modules which are not available on some platforms and modules disabled at Python build are also listed. All module kinds are listed: pure Python, built-in, frozen and extension modules. Test modules are excluded." https://docs.python.org/dev/library/sys.html#sys.stdlib_module_names As I wrote previously, there are use cases which *require* the list being the same on all platforms. Moreover, in practice, it's quite hard to build a list of available stdlib module names. You need to build extension modules, try to implement them, then rebuild the list of module which requires to rebuild Python. It's not convenient. Also, there are different definition of "available". For example, "import multiprocessing" can fail on some platforms if there is no lock implementation available. It's not because it's installed on the system that the import will work for sure. IMO the only reliable way to check if a module can be imported... is to import it. And then you hit again the issue of import side effects. There are different ways to filter sys.stdlib_module_names list to only list "available" modules. Try import, pkgutil.iter_modules() or pkgutil.walk_packages(). IMO it should remain out of the scope of sys.stdlib_module_names. Victor -- Night gathers, and now my watch begins. It shall not end until my death. _______________________________________________ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/IKFK6CTTYTWD2VFH36AIN5IGS66KSMFA/ Code of Conduct: http://python.org/psf/codeofconduct/