tuple make indexerror index compile python py2exe

indexerror - python make executable windows



Python-IndexError: índice de tupla fuera de rango cuando se usa py2exe (4)

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, he instalado Python 3.4.3, e intento esto:

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

1) ingrese en su carpeta de script 2) desactive cualquier antivirus que tenga (cosa extraña, conozca por otra pregunta SO xD)

2) llame al intérprete de python 3.4.3 por su ruta absoluta, en mi caso, he instalado en:

C:/Python34

3) ejecuta el comando

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

espero que me ayude como yo

Actualmente estoy tratando de hacer un ejecutable usando py2exe. Yo uso Python 3.6. El script que estoy utilizando 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 <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>

¿Qué causa el IndexError?

Editar: aquí está el archivo setup.py

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


La solución que utilicé como Py2Exe detuvo el desarrollo en Python 3.4 y no funcionará con las versiones más nuevas fue utilizar PyInstaller.

C:/>pip install pyinstaller C:/>pyinstaller yourprogram.py

Esto creará un subdirectorio llamado dist con yourprogram.exe contenido en una carpeta llamada yourprogram.

Use -F para colocar todos los archivos generados en un archivo ejecutable.

C:/>pyinstaller -F yourprogram

Use can use -w to si desea eliminar la pantalla de la consola para las GUI.

C:/>pyinstaller -w yourprogram.py

Poniéndolo todo más lejos.

C:/>pyinstaller -w -F yourprogram.py

Lea más sobre PyInstaller here .

Python versión 3.7.3.


Python 3.6 rediseñó completamente el bytecode para CPython (ya no es un código de "byte", es un código de palabras, donde todos los códigos de operación tienen dos bytes de ancho 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 py2exe , que, dada la versión publicada más reciente de py2exe solo reclama soporte para 3.3 y 3.4, no podría tener conocimiento o soporte para los nuevos códigos de operación de código de palabra; ni siquiera habían sido concebidos en el momento en que py2exe se actualizó por última vez. El código de bytes a menudo cambia de manera pequeña de una versión a otra que podría romper incluso Python 3.5 (dado que solo se admite explícitamente el soporte 3.3 y 3.4), pero 3.6 está 100% garantizado de fallar.


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

Este es el archivo de instalación que utilicé 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")] )`

luego python setup.py bdist_msi