Archivio

Archivio per la categoria ‘pyinstaller’

Pyinstaller: django stand alone application spec file

20 Novembre 2017 Commenti chiusi

Relativamente ad applicazioni django stand-alone, descritte in questo articolo, qualora si dovessero creare i binari per windows con pyinstaller, è utile usare questo scheletro di file spec.

# -*- mode: python -*-

block_cipher = None


a = Analysis(['main.py'],
             pathex=['<path-of-application>'],
             hiddenimports=['htmlentitydefs',
                            'HTMLParser',
                            'Cookie',
			    'django.template.defaulttags',
			    'django.template.loader_tags',
                            'django.middleware.common',
                            'django.core.handlers.wsgi',
			    'settings'],
             hookspath=None,
             runtime_hooks=None,
             excludes=None,
             cipher=block_cipher)

pyz = PYZ(a.pure,cipher=block_cipher)

exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='fstat.exe',
          debug=False,
          strip=None,
          upx=True,
          console=True )

attenzione al pathex, la directory dove dovrà risiedere il binario risultante.

Negli hidden imports, come si nota, deve comparire anche il file settings.py, file descritto nell’articolo relativo alla struttura delle applicazioni django stand-alone.

La creazione del binario si eseguirà con il comando:

pyinstaller --onefile <my-app>.spec

PyInstaller: ImportError: No module named flask.ext.sqlalchemy

23 Gennaio 2015 Commenti chiusi

PyInstaller: ImportError: No module named flask.ext.sqlalchemy

Ho creato una applicazione che fa uso di flask_sqlalchemy
Con PyInstaller creo i binari da far girare su win, ma quando lancio l’eseguibile creato, ottengo l’errore:

ImportError: No module named flask.ext.sqlalchemy

questo è dovuto al fatto che sqlalchemy non è direttamente sotto flask.ext, ma è una sorta di redirect proveniente dalla
directory flask-sqlalchemy (vedere la struttura degli ‘egg’ in Python27/Lib/site-packages)

Inserendo l’importazione vera e propria nel file che compilo:

# pyinstaller
import flask_sqlalchemy._compat as _

import flask.ext.sqlalchemy as s

o modificando il file spec aggiungendo gli import alla voce hiddenimports:

Analysis(['hello.py'],
             hiddenimports=['flask_sqlalchemy', 'flask_sqlalchemy._compat']
             #...
             )

quando lancio la compilazione con

python pyinstaller/pyinstaller.py --onefile miofile.py --name mionome

il problema si risolve!

Questo ultimo comando deriva dal fatto, che avendo un problema su pyinstaller ho scaricato
nella directory dello script da compilare, la versione ultima di pyinstaller tramite git:

git clone https://github.com/pyinstaller/pyinstaller
Categorie:pyinstaller, python Tag: