diff --git a/patroni/__init__.py b/patroni/__init__.py index 8a8899b1..c079d61b 100644 --- a/patroni/__init__.py +++ b/patroni/__init__.py @@ -169,9 +169,13 @@ class Patroni(object): def patroni_main(): import argparse + + from multiprocessing import freeze_support from patroni.config import Config, ConfigParseError from patroni.validator import schema + freeze_support() + parser = argparse.ArgumentParser() parser.add_argument('--version', action='version', version='%(prog)s {0}'.format(__version__)) parser.add_argument('--validate-config', action='store_true', help='Run config validator and exit') diff --git a/patroni/dcs/__init__.py b/patroni/dcs/__init__.py index 7faa5429..cee96805 100644 --- a/patroni/dcs/__init__.py +++ b/patroni/dcs/__init__.py @@ -66,8 +66,11 @@ def dcs_modules(): module_prefix = __package__ + '.' if getattr(sys, 'frozen', False): - importer = pkgutil.get_importer(dcs_dirname) - return [module for module in list(importer.toc) if module.startswith(module_prefix) and module.count('.') == 2] + toc = set() + for importer in pkgutil.iter_importers(dcs_dirname): + if hasattr(importer, 'toc'): + toc |= importer.toc + return [module for module in toc if module.startswith(module_prefix) and module.count('.') == 2] else: return [module_prefix + name for _, name, is_pkg in pkgutil.iter_modules([dcs_dirname]) if not is_pkg]