Как использовать pyinstaller со скрытым импортом для scipy.оптимизация leastsq

мое приложение wxpython скомпилировано отлично с pyinstaller, до некоторой функциональности, основанной на from scipy.optimize import leastsq добавлена инструкция.

Как это исправить?

1 ответов


при первом запуске команды pyinstaller myscript.py в cmd, a будет создан (или вы можете создать его вручную). Этот файл позволяет указать скрытый импорт, и я обнаружил (долгим и утомительным процессом пробной ошибки), что следующий скрытый импорт сделал трюк:

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

они, вероятно, должны быть связаны через крючки, но я не мог понять, как, так что это "быстрый и грязный" способ.

теперь вы выполните pyinstaller myscript.spec.

мой полный файл посмотрел вдоль этих строк:--6-->

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