def _reset_sys_path(): # Clear generic sys.path[0] import os import sys resources = os.environ["RESOURCEPATH"] while sys.path[0] == resources: del sys.path[0] _reset_sys_path() def _chdir_resource(): import os os.chdir(os.environ["RESOURCEPATH"]) _chdir_resource() def _disable_linecache(): import linecache def fake_getline(*args, **kwargs): return "" linecache.orig_getline = linecache.getline linecache.getline = fake_getline _disable_linecache() import re import sys cookie_re = re.compile(rb"coding[:=]\s*([-\w.]+)") if sys.version_info[0] == 2: default_encoding = "ascii" else: default_encoding = "utf-8" def guess_encoding(fp): for _i in range(2): ln = fp.readline() m = cookie_re.search(ln) if m is not None: return m.group(1).decode("ascii") return default_encoding def _run(): global __file__ import os import site # noqa: F401 sys.frozen = "macosx_app" base = os.environ["RESOURCEPATH"] argv0 = os.path.basename(os.environ["ARGVZERO"]) script = SCRIPT_MAP.get(argv0, DEFAULT_SCRIPT) # noqa: F821 path = os.path.join(base, script) sys.argv[0] = __file__ = path if sys.version_info[0] == 2: with open(path, "rU") as fp: source = fp.read() + "\n" else: with open(path, "rb") as fp: encoding = guess_encoding(fp) with open(path, "r", encoding=encoding) as fp: source = fp.read() + "\n" BOM = b"\xef\xbb\xbf".decode("utf-8") if source.startswith(BOM): source = source[1:] exec(compile(source, path, "exec"), globals(), globals()) def _setup_ctypes(): import os from ctypes.macholib import dyld frameworks = os.path.join(os.environ["RESOURCEPATH"], "..", "Frameworks") dyld.DEFAULT_FRAMEWORK_FALLBACK.insert(0, frameworks) dyld.DEFAULT_LIBRARY_FALLBACK.insert(0, frameworks) _setup_ctypes() def _boot_multiprocessing(): import sys import multiprocessing.spawn orig_get_command_line = multiprocessing.spawn.get_command_line def wrapped_get_command_line(**kwargs): orig_frozen = sys.frozen del sys.frozen try: return orig_get_command_line(**kwargs) finally: sys.frozen = orig_frozen multiprocessing.spawn.get_command_line = wrapped_get_command_line _boot_multiprocessing() def _setup_openssl(): import os resourcepath = os.environ["RESOURCEPATH"] os.environ["SSL_CERT_FILE"] = os.path.join( resourcepath, "openssl.ca", "cert.pem") os.environ["SSL_CERT_DIR"] = os.path.join( resourcepath, "openssl.ca", "certs") _setup_openssl() DEFAULT_SCRIPT='dicom2pacs.py' SCRIPT_MAP={} _run()