Ошибка при создании исполняемого файла с помощью cx_Freeze: IndexError: индекс кортежа вне допустимого диапазона

Задний план

Я создал программу, которую пытаюсь превратить в исполняемый файл с помощью CX_Freeze. Файл setup.py находится в том же каталоге, что и все файлы, с которыми я работаю. Никаких дополнительных библиотек, кроме TKinter и OS, не использую.

Программа нормально работает нормально, когда я запускаю ее через PyCharm> Run.


Номера версий

  • cx_Freeze ver: - 5.0
  • cx_Freeze .whl: - cx_Freeze-5.0-cp36-cp36m-win_amd64.whl
  • версия Python: - 3.6.0b4
  • pycharm ver: - 2016.3.1

Это мой setup.py файл

import cx_Freeze
import sys
from cx_Freeze import setup, Executable


base = None

if sys.platform == 'win32':
    base = "Win32GUI"

cx_Freeze.setup(
    name = "FileOrganizer-Client",
    options = {"build_exe": {"packages":["tkinter","os"],"include_files":["icon2.ico"]}},
    version = "0.01",
    description = "File Organizer",
    executables = [cx_Freeze.Executable("alpha_GUI.py", base=base, icon="icon2.ico")]
)

Это ошибка, которую я получаю, когда запускаю "python setup.py build" внутри каталога.

C:\Users\Jeremy\PycharmProjects\cleanup>C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\python setup.py build running build running build_exe
Traceback (most recent call last):   File "setup.py", line 18, in
<module>
    executables = [cx_Freeze.Executable("alpha_GUI.py", base=base, icon="icon2.ico")]

  File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\dist.py",
line 349, in setup
    distutils.core.setup(**attrs)

  File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\distutils\core.py",
line 148, in setup
    dist.run_commands()

  File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\distutils\dist.py",
line 955, in run_commands
    self.run_command(cmd)

  File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\distutils\dist.py",
line 974, in run_command
    cmd_obj.run()

  File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\distutils\command\build.py",
line 135, in run
    self.run_command(cmd_name)

  File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\distutils\cmd.py",
line 313, in run_command
    self.distribution.run_command(command)

  File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\distutils\dist.py",
line 974, in run_command
    cmd_obj.run()

  File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\dist.py",
line 219, in run
    freezer.Freeze()

  File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\freezer.py",
line 621, in Freeze
    self.finder = self._GetModuleFinder()

  File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\freezer.py",
line 333, in _GetModuleFinder
    self.path, self.replacePaths)

  File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\finder.py",
line 150, in __init__
    self._AddBaseModules()

  File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\finder.py",
line 161, in _AddBaseModules
    self.IncludeModule("traceback")

  File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\finder.py",
line 651, in IncludeModule
    namespace = namespace)

  File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\finder.py",
line 310, in _ImportModule
    deferredImports, namespace = namespace)

  File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\finder.py",
line 403, in _InternalImportModule
    parentModule, namespace)

  File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\finder.py",
line 474, in _LoadModule
    self._ScanCode(module.code, module, deferredImports)

  File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\finder.py",
line 562, in _ScanCode
    arguments.append(co.co_consts[opArg])

IndexError: tuple index out of range

Я не очень разбираюсь в этом и не знаком с этим, поэтому надеюсь, что ничего не упустил. Пожалуйста, дайте мне знать, если потребуется дополнительная информация.


person Jeremy Weisener    schedule 19.12.2016    source источник


Ответы (1)


Это было отправлено как ошибка в cx_freeze, Python 3.6 внес некоторые изменения в объекты кода (особенно с PEP 523), поэтому он мог внести определенные ошибки в приложения, которые зависят от них.

Следите за проблемой на cx_freeze и помните, что при использовании недавно выпущенной версии Python могут возникнуть определенные ошибки.


Кстати, поскольку вы импортируете cx_Freeze и получаете доступ к setup и Executable через них, нет необходимости в:

from cx_Freeze import setup, Executable

линия. Вы не используете эти имена.

person Dimitris Fasarakis Hilliard    schedule 19.12.2016
comment
Спасибо большое, вот и все! с использованием Python34 работал. Обычно я пытаюсь загрузить последнюю версию на любом языке, поэтому мне не придется обновлять сразу же, но теперь я вижу, что это не всегда хорошо. Я усвоил урок. :) - person Jeremy Weisener; 19.12.2016
comment
@JeremyWeisener, вы скачали второй релиз-кандидат Python 3.6, а не final! В любом случае, да, вам нужно быть осторожным (кстати, почти уверен, что Python 3.5 также будет работать без проблем. - person Dimitris Fasarakis Hilliard; 19.12.2016
comment
Ах, это был единственный, который я видел. = X У меня уже был установлен python 3.4, поэтому я просто решил использовать его. Это очень простой код. - person Jeremy Weisener; 19.12.2016