# -*- mode: python -*- block_cipher = None def Entrypoint(dist, group, name, **kwargs): import pkg_resources # get toplevel packages of distribution from metadata def get_toplevel(dist): distribution = pkg_resources.get_distribution(dist) if distribution.has_metadata('top_level.txt'): return list(distribution.get_metadata('top_level.txt').split()) else: return [] kwargs.setdefault('hiddenimports', []) packages = [] for distribution in kwargs['hiddenimports']: packages += get_toplevel(distribution) kwargs.setdefault('pathex', []) # get the entry point ep = pkg_resources.get_entry_info(dist, group, name) # insert path of the egg at the verify front of the search path kwargs['pathex'] = [ep.dist.location] + kwargs['pathex'] # script name must not be a valid module name to avoid name clashes on import script_path = os.path.join(workpath, name + 'launcher') print("creating script for entry point", dist, group, name) with open(script_path, 'w') as fh: print("import", ep.module_name, file=fh) print("%s.%s()" % (ep.module_name, '.'.join(ep.attrs)), file=fh) for package in packages: print("import", package, file=fh) return Analysis( [script_path] + kwargs.get('scripts', []), **kwargs ) a = Entrypoint('blogit', 'console_scripts', 'blogit', datas=[('blogit/blogit-mir/*', 'blogit-mir')]) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE(pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [], name='blogit', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, runtime_tmpdir=None, console=True ) coll = COLLECT( exe, a.binaries, a.zipfiles, a.datas, name='blogit-dir', strip=False, upx=True )