construir un .exe para Windows desde un script de Python 3

Me gustaría construir un ejecutable para un script de Python 3 que:

importa pyqtgraph (con pyqt5)importa theano y pymc3también importa numpy, scipy, sys, osabre una GUI simple hecha con qt designer y almacenada en un archivo ‘.ui 'se distribuirá en máquinas con Windows 7+

Probé varias herramientas (py2exe, pyinstaller, pynsist, cx_Freeze) durante horas pero fallé cada vez. mi resultado 'menos peor' fue con pyinstaller (ver más abajo) sin la parte nano (y sin una parte del script). Alguien puede ayudarme ?

Tengo 3 archivos: 2 archivos '.py' (1 con el principal y el otro con un montón de definiciones) y un '.ui' que describe la GUI. El script hace algunos análisis estadísticos, luego traza algunas curvas.

Aquí hay un ejemplo de mi falla con python 3.5 y cx_Freeze (que creo que es el intento más avanzado que tuve, pero no estoy restringido a esas herramientas en particular): puse mis 3 archivos en un directorio en una máquina de Windows donde todo estaba dolorosamente instalado (con anaconda). Añado un archivo 'setup.py', que para cx_Freeze es:

from cx_Freeze import setup, Executable
import os

os.environ['TCL_LIBRARY'] = r'C:\Program Files\Python 3.5\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Program Files\Python 3.5\tcl\tk8.6'
os.environ['PYQTGRAPH_QT_LIB'] = 'PyQt5'

setup(
    name = ‘concentrationprofiles',
    version = '0.1',
    description = 'simple tool to simulate concentration profiles. preliminary',
    author = 'SPH',
    options = dict(
        build_exe = dict(
            packages = ['os','sys','numpy','theano','pymc3','pyqtgraph'],#omitting ‘scipy’ ! for some reason when I put ’scipy’ in this list the building fails, but it works without… probably the ‘import scipy’ inside the code is properly interpreted
            includes = ['numpy.core._methods','numpy.lib.format',
                        'pyqtgraph.debug','pyqtgraph.functions',
                        'pyqtgraph.ThreadsafeTimer','cp_util_jul17'],
            include_files = ['GUI_cprofiles_jul17.ui']
        )),
    executables = [Executable(
        script='cprofiles_jul17.py',
        base='Win32GUI',
        targetName=‘concentprofiles.exe'
        )]
    )

Luego ejecuto la línea de comando 'python setup.py build' en el símbolo del sistema anaconda (equivalente al símbolo del sistema que yo sepa) en el directorio con los 4 archivos. Después de muchos episodios y horas de lucha, el edificio se ve bien (líneas de 100 sin mensaje de error y hasta el final), crea un directorio 'build' con un subdirectorio 'exe.win-amd64-3.5' que contiene todo lo necesario + el .exe. Pero cuando intento ejecutar este .exe no obtengo nada: ningún mensaje de error, ninguna consola o ventana abierta, ningún cierre rápido de apertura y no puedo encontrar un registro ... simplemente nada

Traté de cambiar la opción "base" de "Win32GUI" a base = "Consola" y base = Ninguno. En estos casos, supongo que hay un cierre rápido de apertura de consola que no puedo leer ya que no encuentro el registro.

Aquí hay algunos otros malos resultados durante otros intentos:

py2exe: resulta ser incompatible con mi python 3.6 habitual, así que bajé a 3.5. Pero incluso en 3.5, después de unas pocas líneas se congeló: una vez más, no hay mensaje de error, no se abre la consola o la ventana, no se abre o cierra rápidamente y no puedo encontrar un registro ... simplemente nada. ni siquiera un directorio de "compilación". En otra ocasión también probé una alternativa con python 3.4 pero recibí un error relacionado con un "msvcr100.dll" que faltaba y que intenté instalar siguiendo las instrucciones en los foros. Cuando finalmente obtuve el permiso para modificar los directorios del sistema, falló una instrucción "regsvr32" (¿no es esto solo para 32 bits? Pero no hay "regsvr64" ...). Finalmente me di por vencido

pyinstaller: ver actualizaciones

pynsist: el principio de pynsist es que no obtienes un ejecutable sino solo un instalador. Por qué no ? No necesito un .exe mientras pueda distribuir el código. Desafortunadamente, después de compilar el instalador (sin error) e instalarlo (nuevamente sin error visible), el programa no da nada, como en el caso de cx_Freeze.

Puedo agregar un enlace a los archivos de script si lo desea / necesita.

actualización agosto, 18, 2017, 9:20 am

Siguiendo la sugerencia, abrí una nueva publicación sobre pyinstaller:construir un .exe para Windows desde un script de python 3 importando theano con pyinstaller.

Los invito a responder las inquietudes de pyinstaller allí. Esta pregunta se marcará como respondida si mi problema se resuelve con py2exe o cx_freeze.

actualización 2 de septiembre, 2pm:

Finalmente logré construir un .exe con pyinstaller después de muchos episodios.

Desafortunadamente, no pude lidiar con el módulo "theano" (que es requerido en mi caso por el módulo "pymc3") y tuve que modificar los archivos .py y abandonar parte de la aplicación. ¿Alguien podría ayudarme a construir un .exe para Windows 7+, con el módulo "theano"?

Respuestas a la pregunta(0)

Su respuesta a la pregunta