2016-01-28 12 views

risposta

5

La prima volta che si esegue il comando pyinstaller myscript.py nel cmd, verrà creato un file myscript.spec (oppure è possibile crearlo manualmente). Questo file permetterà di specificare le importazioni nascoste, e ho trovato (da un lungo e tedioso processo di prova-errore) che le seguenti importazioni nascoste fatto il trucco:

'scipy.special._ufuncs_cxx' 
'scipy.linalg.cython_blas' 
'scipy.linalg.cython_lapack' 
'scipy.integrate' 
'scipy.integrate.quadrature' 
'scipy.integrate.odepack' 
'scipy.integrate._odepack' 
'scipy.integrate.quadpack' 
'scipy.integrate._quadpack' 
'scipy.integrate._ode' 
'scipy.integrate.vode' 
'scipy.integrate._dop' 
'scipy.integrate.lsoda' 

Questi dovrebbero probabilmente essere collegati tramite ganci, ma potrei non capisco come, quindi questo è il modo "veloce & sporco".

Ora si esegue pyinstaller myscript.spec.

mio file completo sembrava in questo senso:

# -*- mode: python -*- 
a = Analysis(['myscript.py'], 
      pathex=['C:\\SourceCode'], 
      hiddenimports=['scipy.special._ufuncs_cxx', 
          'scipy.linalg.cython_blas', 
          'scipy.linalg.cython_lapack', 
          'scipy.integrate', 
          'scipy.integrate.quadrature', 
          'scipy.integrate.odepack', 
          'scipy.integrate._odepack', 
          'scipy.integrate.quadpack', 
          'scipy.integrate._quadpack', 
          'scipy.integrate._ode', 
          'scipy.integrate.vode', 
          'scipy.integrate._dop', 
          'scipy.integrate.lsoda'], 
      hookspath=None, 
      runtime_hooks=None) 
pyz = PYZ(a.pure) 
exe = EXE(pyz, 
      a.scripts, 
      exclude_binaries=True, 
      name='myscript.exe', 
      debug=False, 
      strip=None, 
      upx=True, 
      console=True) 
coll = COLLECT(exe, 
       a.binaries, 
       a.zipfiles, 
       a.datas, 
       strip=None, 
       upx=True, 
       name='myscript')