Понимание исправления известной ошибки: cx_Freeze & Python 3.7

Я пытался создать автономное приложение с графическим интерфейсом для Mac OSX на основе скрипта Python 3 (версия 3.7). Скрипт .py отлично работает при запуске прямо из терминала. Однако это для моего отца, которому нужна помощь при загрузке .jpg, поэтому ему нужно простое приложение с двойным щелчком.

К сожалению, все инструменты, которые я пытаюсь использовать, похоже, содержат известные ошибки с модулями, которые я использую (py2App = openpyxl / pyinstaller = tkinter). Сейчас я пытаюсь использовать cx_Freeze.

Однако снова есть известная ошибка с описанным Python 3.7.

Я пытался исправить это на своем компьютере Mac OSX, но не могу найти файл, на который идет ссылка (на этот GIT-hub, код, ссылка на который приведена в первом сообщении выше).

Я хотел бы исправить эту ошибку, но я также хотел бы понять, почему это происходит, чтобы расширить мои знания как о Python, так и о создании автономных приложений.

К сожалению, я недостаточно хорош, чтобы понять, как исправить это, прочитав сообщения GIT-hub (поскольку они адресованы системам Windows, и я не нахожу файлы), ни почему возникает эта ошибка.

Заранее спасибо за помощь.

для информации, вот копия вывода терминала при запуске созданного исполняемого файла:

/Users/USER_NAME/Desktop/Python/DAD_PROJECT/build/exe.macosx-10.9-x86_64-3.7/PROJECT_NAME ; exit;
MacBook-Pro-de-USER_NAME:~ USER_NAME$ /Users/USER_NAME/Desktop/Python/DAD_PROJECT/build/exe.macosx-10.9-x86_64-3.7/PROJECT_NAME ; exit;
Fatal Python error: initfsencoding: unable to load the file system codec
ImportError: invalid flags 1545637508 in 'encodings'

Current thread 0x00007fff98191380 (most recent call first):
Abort trap: 6
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[Opération terminée]

ИЗМЕНИТЬ и, на всякий случай, мой файл setup.py:

Обратите внимание, что это было автоматически создано на моем Mac с помощью cxfreeze-quickstart, как указано в cx-freeze.readthedocs

from cx_Freeze import setup, Executable

# Dependencies are automatically detected, but it might need
# fine tuning.
buildOptions = dict(packages = [], excludes = [])

import sys
base = 'Win32GUI' if sys.platform=='win32' else None

executables = [
    Executable('PROJECT_NAME.py', base=base, targetName = 'PROJECT_NAME')
]

setup(name='PROJECT_NAME',
      version = 'DAD_PROJECT',
      description = 'Project for my dad',
      options = dict(build_exe = buildOptions),
      executables = executables)

person Nootaku    schedule 23.02.2019    source источник


Ответы (1)


Чтобы найти путь к файлу freezer.py, который необходимо изменить, выполните в консоли Python следующее:

from cx_Freeze import freezer
print(freezer.__file__)

Затем измените этот файл в соответствии с этим репозиторием этого коммита , что означает удаление красных линий с пометкой - и добавление зеленых линий с пометкой +.

person jpeg    schedule 25.02.2019
comment
@Nootaku Чтобы заморозить приложение на основе tkinter с cx_Freeze 5.1.1 (текущая версия), вам необходимо внести некоторые дополнения в автоматически сгенерированный setup.py, который вы разместили. См. этот ответ для рабочего примера. - person jpeg; 25.02.2019