Pyinstaller создает файл, но задыхается от определенных .dll

Когда я запускаю свою программу py, она работает так, как я предполагал. Если я работаю в Linux и создаю исполняемый файл с помощью Pyinstaller, он без проблем строится и выполняется без проблем. Я просмотрел документы Pyinstaller, git и т. Д. Ни одно из опубликованных исправлений не помогло.

Я все еще очень новичок в python и чувствую, что это может быть простое решение, и, возможно, я переосмыслил проблему.

Почему я не могу создать функциональный .exe в системе на базе Windows с помощью pyinstaller?

система виндовс 10

Pyinstaller версии 3.2

Python версии 3.5.2

Это программа с графическим интерфейсом, использующая appJar, которая также обновлена.

Файл строится, но ошибки "Не удалось выполнить скрипт"

РЕДАКТИРОВАНИЕ Не уверен, что это лучше всего редактировать в строке, как это, но... Итак, изучая вывод и внося коррективы, проблема, похоже, в appJar.py. По какой-то причине в нем отсутствуют активы, я изучаю его. Беда в том, что я до сих пор не привык смотреть на такой вывод и не знаю, с чего начать.

C:\Users\_User_>C:\temp\fileCreatorGUI\fileCreatorGUI.exe
Traceback (most recent call last):
  File "F:\Users\_User_\python_working\fileCreatorGUI.py", line 73, in <module>
    app = gui()
  File "C:\Users\_User_\AppData\Local\Programs\Python\Python35\lib\site-packages\appJar\appjar.py", line 509, in __init__
    self.topLevel.wm_iconbitmap(self.appJarIcon)
  File "C:\Users\_User_\AppData\Local\Programs\Python\Python35\lib\tkinter\__init__.py", line 1716, in wm_iconbitmap
    return self.tk.call('wm', 'iconbitmap', self._w, bitmap)
_tkinter.TclError: bitmap "C:\temp\fileCreatorGUI\appJar\resources\icons\favicon.ico" not defined
Failed to execute script fileCreatorGUI

Редактировать 2 См. ответ ниже, но я лаял не на то дерево,


Вывод Pyinstaller задыхается от .dll:

api-ms-win-core-console-l1-1-0.dll
api-ms-win-core-datetime-l1-1-0.dll
(There are like ~40 of these)

Я добавил эти .dll в путь python, я объявил их в двоичных файлах в файле .spec.

вот обрезанный лог:

    2414 WARNING: Can not get binary dependencies for file: C:\Windows\system32\api-
ms-win-crt-stdio-l1-1-0.dll
Traceback (most recent call last):
  File "C:\Users\_USER_NAME\AppData\Local\Programs\Python\Python35-32\lib\site-pa
ckages\PyInstaller\depend\bindepend.py", line 695, in getImports
    return _getImports_pe(pth)
  File "C:\Users\_USER_NAME\AppData\Local\Programs\Python\Python35-32\lib\site-pa
ckages\PyInstaller\depend\bindepend.py", line 122, in _getImports_pe
    dll, _ = sym.forwarder.split('.')
TypeError: a bytes-like object is required, not 'str'
2423 WARNING: Can not get binary dependencies for file: C:\Windows\system32\api-
ms-win-crt-heap-l1-1-0.dll

Я попробовал исправление, указанное здесь: https://github.com/pyinstaller/pyinstaller/pull/1981

но, похоже, это не имело значения.

Кто-то рекомендовал добавить маршрут sys.path.insert(), но в любом случае это не имело значения. Я также пробовал это на виртуальной машине с Windows 7, чистая установка, без изменений. Мой следующий шаг — попытаться использовать Wine в Debian, но я действительно не хочу идти по этому пути. Любая помощь будет оценена по достоинству. Спасибо


person DSMTurboAWD    schedule 12.01.2017    source источник


Ответы (1)


Оказывается, это была проблема с appJar/packaging, pyinstaller не искал активы в правильном каталоге. для разработчиков appJar я закомментировал две строки кода в appJar.py, строки 508-509:

if self.platform == self.WINDOWS:
    self.topLevel.wm_iconbitmap(self.appJarIcon)

Подробнее об особенностях здесь: https://github.com/jarvisteach/appJar/issues/84 Я, вероятно, могу исправить это, используя аргумент --path с pyinstaller, но на данный момент проблема полностью решена.

person DSMTurboAWD    schedule 13.01.2017