# https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Setuptools-Entry-Point def Entrypoint(dist, group, name, scripts=None, pathex=None, binaries=None, datas=None, hiddenimports=None, hookspath=None, excludes=None, runtime_hooks=None, cipher=None, win_no_prefer_redirects=False, win_private_assemblies=False): 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 [] hiddenimports = hiddenimports or [] packages = [] for distribution in hiddenimports: packages += get_toplevel(distribution) scripts = scripts or [] pathex = pathex or [] # 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 pathex = [ep.dist.location] + pathex # script name must not be a valid module name to avoid name clashes on import script_path = os.path.join(workpath, name + '-script.py') print "creating script for entry point", dist, group, name with open(script_path, 'w') as fh: fh.write("import {0}\n".format(ep.module_name)) fh.write("{0}.{1}()\n".format(ep.module_name, '.'.join(ep.attrs))) for package in packages: fh.write("import {0}\n".format(package)) return Analysis([script_path] + scripts, pathex=pathex, binaries=binaries, datas=datas, hiddenimports=hiddenimports, hookspath=hookspath, excludes=excludes, runtime_hooks=runtime_hooks, cipher=cipher, win_no_prefer_redirects=win_no_prefer_redirects, win_private_assemblies=win_private_assemblies )