Как включить PyInstaller в комплект PyInstaller? - PullRequest
0 голосов
/ 07 ноября 2019

Я хочу заморозить приложение Python, которое, в качестве одной из своих функций, может создавать замороженные приложения Python с использованием PyInstaller. Вот минимальное приложение, показывающее, чего я хочу достичь:

import PyInstaller.__main__

with open('inception', 'w', encoding='utf-8') as f:
    f.write('import sys; print("Hello from the inside")\n')
PyInstaller.__main__.run(['--noconfirm', '--onedir', 'inception'])

Замораживание этого с помощью PyInstaller

PS> pyinstaller --noconfirm --onedir example.py

должно создать исполняемый файл exemple.exe, который может быть выполнен для получения inception.exe.

При первой попытке я получил следующую ошибку

PS> .\dist\example\example.exe
PyInstaller cannot check for assembly dependencies.
Please install pywin32-ctypes.

pip install pywin32-ctypes

Это было исправлено установкой pywin32 (pywin32-ctypes уже установлена) и изменением файла compat.py PyInstaller какобъяснил здесь . Повторное заполнение приложения теперь приводит к следующей ошибке

PS> .\dist\example\example.exe
Traceback (most recent call last):
  File "example.py", line 2, in <module>
    import PyInstaller.__main__
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "d:\code\stackoverflow\pyinstaller_inception\venv\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
    exec(bytecode, module.__dict__)
  File "lib\site-packages\PyInstaller\__init__.py", line 66, in <module>
  File "lib\site-packages\pkg_resources\__init__.py", line 481, in get_distribution
  File "lib\site-packages\pkg_resources\__init__.py", line 357, in get_provider
  File "lib\site-packages\pkg_resources\__init__.py", line 900, in require
  File "lib\site-packages\pkg_resources\__init__.py", line 786, in resolve
pkg_resources.DistributionNotFound: The 'PyInstaller' distribution was not found and is required by the application
[14376] Failed to execute script example

Таким образом, похоже, что PyInstaller не связывает себя внутри приложения. На странице github PyInstaller есть проблема , но это не очень помогает. Это вообще возможно? Если да, то как?

Это должно работать на Windows 10 с Python 3.7. Я использую PyInstaller версии 3.5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...