Уменьшение размера исполняемого файла с помощью UPX в macOS - PullRequest
0 голосов
/ 27 ноября 2018

Я создаю связанное приложение с PyInstaller.Приложение включает в себя NumPy, поэтому окончательный размер прилагаемого приложения составляет> 600 МБ.Я хочу, конечно, сжать размер прилагаемого приложения, поэтому я установил upx через brew install upx.Тем не менее, PyInstaller падает с ошибкой ниже.

1- Есть ли альтернатива UPX или даже PyIntaller для macOS?

2- Можно ли исправить эту ошибку?

3- Можно ли запускать UPX вручную после того, как PyInstaller создает связанное приложение для выбранных файлов?Если да, не могли бы вы привести пример командной строки для UPX?

Ошибка:

Traceback (most recent call last):
  File "/Users/Kenny/miniconda3/envs/umsap/bin/pyinstaller", line 11, in <module>
    sys.exit(run())
  File "/Users/Kenny/miniconda3/envs/umsap/lib/python3.7/site-packages/PyInstaller/__main__.py", line 111, in run
    run_build(pyi_config, spec_file, **vars(args))
  File "/Users/Kenny/miniconda3/envs/umsap/lib/python3.7/site-packages/PyInstaller/__main__.py", line 63, in run_build
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
  File "/Users/Kenny/miniconda3/envs/umsap/lib/python3.7/site-packages/PyInstaller/building/build_main.py", line 838, in main
    build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
  File "/Users/Kenny/miniconda3/envs/umsap/lib/python3.7/site-packages/PyInstaller/building/build_main.py", line 784, in build
    exec(text, spec_namespace)
  File "<string>", line 47, in <module>
  File "/Users/Kenny/miniconda3/envs/umsap/lib/python3.7/site-packages/PyInstaller/building/osx.py", line 89, in __init__
    self.__postinit__()
  File "/Users/Kenny/miniconda3/envs/umsap/lib/python3.7/site-packages/PyInstaller/building/datastruct.py", line 158, in __postinit__
    self.assemble()
  File "/Users/Kenny/miniconda3/envs/umsap/lib/python3.7/site-packages/PyInstaller/building/osx.py", line 169, in assemble
    fnm = checkCache(fnm, strip=self.strip, upx=self.upx, dist_nm=inm)
  File "/Users/Kenny/miniconda3/envs/umsap/lib/python3.7/site-packages/PyInstaller/building/utils.py", line 228, in checkCache
    dylib.mac_set_relative_dylib_deps(cachedfile, dist_nm)
  File "/Users/Kenny/miniconda3/envs/umsap/lib/python3.7/site-packages/PyInstaller/depend/dylib.py", line 308, in mac_set_relative_dylib_deps
    dll = MachO(libname)
  File "/Users/Kenny/miniconda3/envs/umsap/lib/python3.7/site-packages/macholib/MachO.py", line 95, in __init__
    self.load(fp)
  File "/Users/Kenny/miniconda3/envs/umsap/lib/python3.7/site-packages/macholib/MachO.py", line 110, in load
    self.load_header(fh, 0, size)
  File "/Users/Kenny/miniconda3/envs/umsap/lib/python3.7/site-packages/macholib/MachO.py", line 148, in load_header
    hdr = MachOHeader(self, fh, offset, size, magic, hdr, endian)
  File "/Users/Kenny/miniconda3/envs/umsap/lib/python3.7/site-packages/macholib/MachO.py", line 188, in __init__
    self.load(fh)
  File "/Users/Kenny/miniconda3/envs/umsap/lib/python3.7/site-packages/macholib/MachO.py", line 293, in load
    read_bytes, header.sizeofcmds))
ValueError: Read 1592 bytes, header reports 1992 bytes
...