Bläddra i källkod

Add spec for pyinstaller

Oz N Tiram 6 år sedan
förälder
incheckning
1a41eb8e59
1 ändrade filer med 57 tillägg och 0 borttagningar
  1. 57 0
      blogit.spec

+ 57 - 0
blogit.spec

@@ -0,0 +1,57 @@
+# -*- 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')
+
+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 )