PyInstaller:解决scipy打包失败的问题

测试环境:win10 + python3.6 64位 + PyInstaller3.3.1
打包后,运行出现如下错误时,是应为缺少extra-dll里面的文件。

  File "venv\lib\site-packages\scipy\fftpack\basic.py", line 12, in 
  File "C:\Users\..\venv\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 714, in load_module
    module = loader.load_module(fullname)
ImportError: DLL load failed: 找不到指定的模块。

在PyInstaller脚本里添加以下内容即可。

--add-binary', './venv/lib/site-packages/scipy/extra-dll/*;.'

最终打包脚本如下所示:

from PyInstaller.__main__ import run

if __name__ == '__main__':
    opts = ['-c',
            '--add-data', 'test.db;.',
            '--add-data', 'test.ini;.',
            '--add-data', 'test.ico;.',
            '--icon', 'test.ico',
            '--add-binary', './venv/lib/site-packages/scipy/extra-dll/*;.',

            '--hidden-import', 'PyQt5.QtSerialPort',
            '--hidden-import', 'PyQt5.QtChart',
            '--hidden-import', 'PyQt5.sip',
            '--hidden-import', 'ctypes.wintypes',
            '--hidden-import', 'win32con',
            '--hidden-import', 'sqlalchemy',
            '--hidden-import', 'sqlalchemy.orm',
            '--hidden-import', 'logging.handlers',
            '--hidden-import', 'scipy._lib.messagestream',

            '-y', '--noupx', '--clean',
            'test.py']

    run(opts)

你可能感兴趣的:(Python)