欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用pyinstaller 打包程序碰到的问题和解决方法(scipy...)

程序员文章站 2022-07-14 21:46:06
...

一、打包程序库选择

  1. py2exe. 不支持python3

  2. cx_Freeze. 现在只更新到python3.3

  3. pyinstaller. 支持python2、python3所有版本

因为现在使用的版本是python3.6,所以没得选择,只能使用pyinstaller。另外百度了一圈,pyinstaller还是比较好用的。

二、安装和使用

用pip安装就可以了。

pip install pyinstaller

没有提示任何出错信息,没啥好写的。

基本使用方法:

pyinstaller -F XXXX.py

cd命令跳转至程序目录,XXXX.py是要打包的主文件,其他引用文件会一起打包。

pyinstaller -F -w -i XXXX.ico XXXX.py

-w选项不带命令行窗口,-i选项是程序图标。

三、出现的问题

用上面的命令打包,过程比较顺利,也显示以下结果信息。

用pyinstaller 打包程序碰到的问题和解决方法(scipy...)

但是运行打包好的程序时,出现以下错误信息:

ImportError: DLL load failed: 找不到指定的模块。

[6772] Failed to execute script calc_similar_gui错误。

用pyinstaller 打包程序碰到的问题和解决方法(scipy...)

对以上错误信息进行分析,发现是scipy里的一些模块找不到。

又分析打包时出现的一些警告,

用pyinstaller 打包程序碰到的问题和解决方法(scipy...)

参考网上的解决方法把/lib/site-packages/scipy/extra-dll/ 的所有.dll复制到要打包的目录下。

用pyinstaller 打包程序碰到的问题和解决方法(scipy...)

然后重新打包,发现WARNING提示信息已消失。

运行重新打包的.exe程序,结果又出现新的错误信息:

ModuleNotFoundError: No module named 'scipy._lib.messagestream'
[6656] Failed to execute script calc_similar_gui

用pyinstaller 打包程序碰到的问题和解决方法(scipy...)

结合ImportError when importing certain modules from SciPY这个问题的解决方法在/scipy/__init__.py文件的底部添加

from scipy._lib import messagestream

用pyinstaller 打包程序碰到的问题和解决方法(scipy...)

继续打包,终于成功,所有问题全部解决。

四、附录

  1. python版本3.6.6
  2. scipy版本1.1.0