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