PyInstaller 打包 .py文件为windows下.exe执行文件遇到的种种

  • 想要打包成windows下运行的exe,必须在windows环境下打包,如果在虚拟机的ubuntu环境下打包也只能运行在linux系统里。
  • 想要exe运行在32位的系统里,必须使用32位的python和环境打包,如果运行在64位的系统里,无所谓用32位python还是64位。
  • 使用命令 pyinstaller -F my.py, -F参数使只生成一个exe(将所有库打包在一起);该命令运行时会在当前路径下生成一个.spec的文本文件
  • pyinstaller命令进行过程中,可能遇到py32win之类的错误,千万不要放过任何一个错误,即使最后显示successful,少了py32win可以直接pip install py32win.
  • 如果打包完成后双击运行时,出现闪退,多半是因为程序刚运行就出bug了,所以自动退出了,这个时候可以使用命令行运行该exe,这样可以看到问题所在
  • 如果遇到问题:
ModuleNotFoundError: No module named 'pywt._extensions._cwt' 

        可以在运行pyinstaller命令生成的.spec文件中的hiddenimports列表里加上"pywt","pywt._extensions._cwt":

        hiddenimports=["pywt","pywt._extensions._cwt"]

        然后再运行:

pyinstaller my.spec
  • 如果遇到问题
RuntimeError: No suitable plugin registered for imread.

You may load I/O plugins with the `skimage.io.use_plugin` command.  A list of all available plugins can be found using `skimage.io.plugins()`.
file_test returned -1

原因是因为代码里使用了 skimage库的代码:

from skimage import io

io.read()

后来换成用cv2来读image, 再生成,就没错了,具体原因不知道.

  • 如果遇到问题:
No module named PyQt5.QtCore

可能是使用了matplotlib之类的库,但是没有install PyQt5,所以安装一下:

pip install pyqt5

猜你喜欢

转载自blog.csdn.net/ygfrancois/article/details/84556955