gpt4 book ai didi

python - 索引错误 : tuple index out of range when using py2exe

转载 作者:IT老高 更新时间:2023-10-28 21:12:43 25 4
gpt4 key购买 nike

我目前正在尝试使用 py2exe 制作可执行文件。我使用 Python 3.6。我正在使用的脚本导入 openpyxlpptx 并在我使用 Pycharm 或使用命令窗口运行脚本时运行良好。

输出产生错误:

IndexError: tuple index out of range

您可以在下面找到 cmd 输出:

C:\Python36>python setup.py py2exe
running py2exe
Traceback (most recent call last):
File "setup.py", line 4, in <module>
setup(console=['Storybookmaker.py'])
File "C:\Python36\lib\distutils\core.py", line 148, in setup
dist.run_commands()
File "C:\Python36\lib\distutils\dist.py", line 955, in run_commands
self.run_command(cmd)
File "C:\Python36\lib\distutils\dist.py", line 974, in run_command
cmd_obj.run()
File "C:\Python36\lib\site-packages\py2exe\distutils_buildexe.py", line 188, in run
self._run()
File "C:\Python36\lib\site-packages\py2exe\distutils_buildexe.py", line 267, in _run
builder.analyze()
File "C:\Python36\lib\site-packages\py2exe\runtime.py", line 160, in analyze
self.mf.import_hook(modname)
File "C:\Python36\lib\site-packages\py2exe\mf3.py", line 120, in import_hook
module = self._gcd_import(name)
File "C:\Python36\lib\site-packages\py2exe\mf3.py", line 274, in _gcd_import
return self._find_and_load(name)
File "C:\Python36\lib\site-packages\py2exe\mf3.py", line 357, in _find_and_load
self._scan_code(module.__code__, module)
File "C:\Python36\lib\site-packages\py2exe\mf3.py", line 388, in _scan_code
for what, args in self._scan_opcodes(code):
File "C:\Python36\lib\site-packages\py2exe\mf3.py", line 417, in _scan_opcodes
yield "store", (names[oparg],)
IndexError: tuple index out of range

C:\Python36>

IndexError 的原因是什么?

编辑:这里是 setup.py 文件:

from distutils.core import setup
import py2exe

setup(console=['Storybookmaker.py'])

最佳答案

更新(2020 年 11 月 17 日):py2exe 活着!!!

显然我一年前的悲观情绪(请参阅原帖底部的“更新”)是没有根据的。 py2exe 于 2020 年 10 月和 11 月发布了新版本,在 0.10.0.2 中支持 3.5-3.8,在 0.10.1.0 中增加了 3.9 的支持(下降支持 3.4 及更早版本)。只要升级到合适的 py2exe 版本(0.10 及更高版本),应该不会出现此问题。

进一步更新 (2022-11-09): 看起来 py2exe 现在与最新版本的 CPython 保持同步(例如,他们发布了 0.13.0.0 ,一个与 3.11 兼容的 py2exe,在 CPython 3.11.0 本身发布的两周内)所以看起来你暂时可以依靠继续支持。他们似乎支持任何给定版本的 4-5 个 CPython 次要版本(支持 3.9 的第一个版本放弃了对 3.4 及更早版本的支持,而增加了对 3.11 的支持的最新版本放弃了 3.7 支持)。


py2exe 0.10 发布之前的原始答案

Python 3.6 completely redesigned the bytecode for CPython (它不再是一个“字节”代码,它是一个字代码,其中所有操作码都是两个字节宽而不是 1-3)。

您看到的故障发生在 py2exe 操作码解析代码中,鉴于最新发布的 py2exe 版本仅声称支持 3.3 和 3.4,因此无法可能了解或支持新的字码操作码;在 py2exe 最后一次更新时,它们甚至还没有被构思出来。字节码通常会在版本之间发生微小变化,甚至可能会破坏 Python 3.5(仅明确声明支持 3.3 和 3.4),但 3.6 保证 100% 失败。

更新:此时(2019 年 11 月),距离上一次 py2exe release 已经过去五年多了,到 2020 年初(当 Python 2 支持完全失效时),它将无法在任何受支持的 Python 版本上运行(3.4 已经不再支持)。我认为可以肯定地说该项目已被放弃。找到其他选项,例如cx_FreezePyInstaller.

关于python - 索引错误 : tuple index out of range when using py2exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41578808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com