Error building executable with cx_Freeze: IndexError: tuple index out of range

大兔子大兔子 提交于 2019-12-23 02:51:14

问题


Background

I have made a program that I am trying to turn into an executable using CX_Freeze. The setup.py file is placed inside the same directory as all files I am working with. I don't use any extra libraries other than TKinter and OS.

The program works perfectly fine normally when I run it via PyCharm>Run


Version Numbers

  • cx_Freeze ver: - 5.0
  • cx_Freeze .whl: - cx_Freeze-5.0-cp36-cp36m-win_amd64.whl
  • python ver: - 3.6.0b4
  • pycharm ver: - 2016.3.1

This is my setup.py file

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")]
)

This is the error I get when I run "python setup.py build" inside the directory

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

I am not very skilled or familiar with any of this so I hope I didn't leave anything out. Please let me know if any more information is needed.


回答1:


This has been submitted as a bug in cx_freeze, Python 3.6 has introduced some changes to code objects (most notably with PEP 523) so it might have introduced certain bugs in applications that depend on them.

Keep track of the issue on cx_freeze and remember that certain errors might pop up when using a newly released version of Python.


As an aside, since you import cx_Freeze and access setup and Executable through there, there's no need for the:

from cx_Freeze import setup, Executable

line. You aren't using those names.



来源:https://stackoverflow.com/questions/41642021/compiling-script-py-with-py2exe-python-3-6-returns-multiple-errors

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!