本文介绍了使用cx_Freeze构建可执行文件时出错:IndexError:元组索引超出范围的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我制作了一个程序,试图使用CX_Freeze将其转换为可执行文件。 setup.py 文件与我正在使用的所有文件都放在同一目录中。除了TKinter和OS外,我不使用任何其他库。

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.

通过 PyCharm> Run 运行该程序时,程序运行正常

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


  • cx_Freeze ver:-5.0

  • cx_Freeze .whl:-cx_Freeze-5.0-cp36-cp36m-win_amd64.whl

  • python版本:-3.6.0b4

  • pycharm版本:-2016.3.1

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






这是我在目录中运行 python setup.py build时遇到的错误




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.

推荐答案

此文件已作为中的错误,Python 3.6已对代码对象进行了一些更改(最显着的是 PEP 523 ),因此它可能已在依赖于它们的应用程序中引入了某些错误。

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.

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

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

顺便说一句,因为导入 cx_Freeze 并访问设置 Executable 到那里,不需要:

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.

这篇关于使用cx_Freeze构建可执行文件时出错:IndexError:元组索引超出范围的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-05 04:24