Pregunta

Estoy intentando compilar un script simple que escribí usando Python3 y PyQt4 usando cx_Freeze, pero tengo tres problemas que simplemente no puedo resolver.

  1. No consigo que aparezcan los iconos.Estoy usando un archivo de recursos compilado para ello, es decir.importando un .py que contiene los recursos, y he intentado seguir los consejos aquí, copiando la carpeta imageformats a mi carpeta de proyecto pero nada parece funcionar.

  2. No estoy usando varios módulos de Python, incluidos tcl y ttk, así que los agregué al excludes opción.Sin embargo, todavía parecen agregarse.

  3. Cuando intento compilar con base='Win32GUI' ejecutar el exe creado genera una excepción: 'NoneType' has no attribute 'encoding'

Estoy bastante seguro de que hay algún problema con mi script de configuración ya que la documentación de cx_Freeze no es muy detallada, así que espero que alguien pueda señalar el problema.Aquí está el script de configuración.No voy a publicar el script que estoy compilando porque es bastante largo, pero si es necesario intentaré crear una versión concisa para probar.

from cx_Freeze import setup, Executable

exe = Executable(
    script='cconvert.py',
    base='Win32GUI'
)

options = dict(
    excludes=['curses', 'email', 'tcl', 'ttk']
)

setup(
    name="Coord Convertor",
    version="0.1",
    description="A Coordinate converter from DMS to DD",
    requires=['pyqt4 (>=4.8)', 'dtlibs (>=0.4.1)'],
    data_files=['imageformats'],
    executables=[exe],
    options={'build-exe': options}
)
¿Fue útil?

Solución

(Tenga en cuenta seguro acerca de 1.)

2:En opciones = {'build-exe'..., creo que debe ser build_exe (guión bajo en lugar de guión).

3:¿Estás intentando acceder a algo como sys.stdout.encoding ¿en cualquier lugar? sys.stdout será Ninguno cuando utilice la base Win32GUI.Incluso un print() La llamada podría desencadenar eso.

Otros consejos

Resuelto.Además de los consejos de Thomas, necesitaba que 'formatos de imagen' estuvieran en 'archivos incluidos' en las opciones, no en 'archivos_datos'.Mi guión final se ve así:

from cx_Freeze import setup, Executable

exe = Executable(
    script='cconvert.pyw',
    base='Win32GUI'
)

options = dict(
    excludes=['curses', 'email', 'tcl', 'ttk', 'tkinter'],
    include_files=['imageformats']
)

setup(
    name="Coord Convertor",
    version="0.1",
    description="A Coordinate converter from DMS to DD",
    requires=['pyqt4 (>=4.8)', 'dtlibs (>=0.4.1)'],
    executables=[exe],
    options={'build_exe': options}
)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top