Ошибка загрузки Python lib с PyInstaller на MacOS - PullRequest
2 голосов
/ 14 марта 2020

Я пытаюсь упаковать python в исполняемый файл на MacOS (10.14.5). Я могу создать исполняемый файл, но выполнение получившегося исполняемого файла dist/hello_world приводит к следующей ошибке:

[55240] Error loading Python lib '/var/folders/yh/6_6mb2y96kg0gnb_nh9r2zrr0000gp/T/_MEIwUMw4X/Python': dlopen: dlopen(/var/folders/yh/6_6mb2y96kg0gnb_nh9r2zrr0000gp/T/_MEIwUMw4X/Python, 10): no suitable image found.  Did find:
    /var/folders/yh/6_6mb2y96kg0gnb_nh9r2zrr0000gp/T/_MEIwUMw4X/Python: code signature invalid for '/var/folders/yh/6_6mb2y96kg0gnb_nh9r2zrr0000gp/T/_MEIwUMw4X/Python'

На моей машине установлена ​​Python 3.7.7, установленная с использованием загруженного установщика Ma c из https://www.python.org/

На данный момент скрипт, который я пытаюсь упаковать, содержит только print('hello world!'), а команда упаковки, которую я использую: pyinstaller -F hello_world.py

1 Ответ

1 голос
/ 26 марта 2020

Мне удалось использовать pyenv и установить специфицированную c версию python с опцией enable framework:

env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.7.6

С этой версией из python (установите с помощью команды pyenv local 3.7.6 в папке, где находится hello_world.py), установите pyinstaller (и любые другие необходимые вам модули) с помощью pip. Затем постройте с помощью

pyinstaller hello_world.py --onefile --clean --windowed

, который должен дать вам функционирование dist/hello_word. Как молодой python, я понятия не имею, почему это работает, в отличие от шагов в первоначальном вопросе. (Я думал, что установщик ОС Ma c по умолчанию включает Python .framework - я уверен, что мое невежество здесь раскрыто, поскольку это, вероятно, значительно отличается от того, что переменная PYTHON_CONFIGURE_OPTS делает выше).

Также возможно делать все это в виртуальной среде (легко управляется pyenv-virtualenv ).

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