From d82301688fa5ccafd2122330e7c979d68c0ca40d Mon Sep 17 00:00:00 2001 From: Alexander Kukushkin Date: Fri, 13 Mar 2020 16:36:12 +0100 Subject: [PATCH] Fix pyinstaller compatibility (#1441) Close https://github.com/zalando/patroni/issues/1440 --- patroni/__init__.py | 4 ++++ patroni/dcs/__init__.py | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) 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]