2016-01-28 3 views

Antwort

5

Wenn Sie zum ersten Mal den Befehl pyinstaller myscript.py im Cmd ausführen, wird eine myscript.spec Datei erstellt (oder Sie können sie manuell erstellen). Diese Datei können Sie verstecken Importe geben, und ich fand (durch einen langen und mühsamen Trial-Error-Prozess), dass die folgenden versteckten Einfuhren den Trick:

'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' 

Diese wahrscheinlich durch Haken verbunden werden sollte, aber ich konnte nicht meinen Kopf herum wie, so ist dies der "schnelle & dreckige" Weg.

Jetzt führen Sie pyinstaller myscript.spec aus.

Meine vollständige Datei sah in dieser Richtung:

# -*- 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') 
Verwandte Themen