Python – IndexError: índice de tupla fuera de rango cuando se usa py2exe

Actualmente estoy tratando de hacer un ejecutable utilizando py2exe. Yo uso Python 3.6. El script que estoy usando importa openpyxl y pptx y funciona bien cuando uso Pycharm o ejecuto el script usando la ventana de comandos. La salida produce el error:

IndexError: índice de tupla fuera de rango

A continuación puede encontrar la salida de cmd:

C:\Python36>python setup.py py2exe running py2exe Traceback (most recent call last): File "setup.py", line 4, in  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> 

¿Qué causa el IndexError?

Edición: aquí está el archivo setup.py

 from distutils.core import setup import py2exe setup(console=['Storybookmaker.py']) 

Python 3.6 rediseñó completamente el código de bytes para CPython (ya no es un código de “byte”, es un código de palabra, donde todos los códigos de operación tienen un ancho de dos bytes en lugar de 1-3).

El error que está viendo se produce en el código de análisis de código de operación de py2exe , que, dada la versión más reciente publicada de py2exe solo admite el soporte para 3.3 y 3.4, posiblemente no tenga conocimiento ni soporte para los nuevos códigos de código de código de palabra; ni siquiera habían sido concebidos en el momento de la última actualización de py2exe . El bytecode a menudo cambia de manera pequeña de una versión a otra, lo que podría afectar incluso a Python 3.5 (dado que solo se admite explícitamente el 3.3 y 3.4), pero el 3.6% está garantizado para fallar.

Tuve el mismo problema, como solución alternativa utilicé cx_freeze. Mi aplicación se basa en wxPython, windows 10, python 3.6, cx_freeze 5.5.1

Este es el archivo de configuración que usé y obtuve el archivo msi en la carpeta dist.

 #setup.py import sys, os from cx_Freeze import setup, Executable __version__ = "1.1.0" include_files = ['logging.ini', 'config.ini', 'running.png'] excludes = ["tkinter"] packages = ["os", "idna", "requests","json","base64","pyodbc"] setup( name = "appname", description='App Description', version=__version__, options = {"build_exe": { 'packages': packages, 'include_files': include_files, 'excludes': excludes, 'include_msvcr': True, }}, executables = [Executable("b2b_conn.py",base="Win32GUI")] )` 

entonces python setup.py bdist_msi

Dennis, unas horas más tarde que tú, pruebo lo mismo sin suerte, he instalado Python 3.6 y, por el momento, no funciona.

Intento un recorrido, instalé Python 3.4.3 y probé esto:

 C:\socket> c:\Python34\python.exe setup.py py2exe 

1) ingrese en su carpeta de script 2) desactive cualquier antivirus que tenga (algo extraño, sepa por otra pregunta SO xD)

2) llamar al intérprete de Python 3.4.3 por su ruta absoluta, en mi caso, lo he instalado en:

 C:\Python34 

3) ejecutar el comando

 c:\Python34\python.exe setup.py py2exe 

espero que la ayuda me guste