使用cx_Freeze构建可执行文件时出错:IndexError:元组索引超出范围

时间:2016-12-19 00:16:49

标签: python tkinter cx-freeze python-3.6

背景

我已经制作了一个程序,我试图使用CX_Freeze变成可执行文件。 setup.py文件与我正在使用的所有文件放在同一目录中。除了TKinter和OS之外,我不会使用任何额外的库。

当我通过 PyCharm>运行

运行程序时,程序运行正常

版本号

  • 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

这是我的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")] ) 文件

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

这是我运行时遇到的错误&#34; python setup.py build&#34;在目录

    echo "
Please enter your domain name : "
read Domain
echo $Domain > /root/domain.info
Hostname=server.$Domain

我不是很熟练或熟悉这些,所以我希望我没有留下任何东西。如果需要更多信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

这已经以a bug in cx_freeze的形式提交,Python 3.6引入了对代码对象的一些更改(最值得注意的是PEP 523),因此它可能在依赖于它们的应用程序中引入了某些错误。

跟踪cx_freeze上的问题,并记住在使用新发布的Python版本时可能会弹出某些错误。

顺便说一句,由于您导入cx_Freeze并访问setupExecutable,因此不需要:

from cx_Freeze import setup, Executable

线。你没有使用这些名字。