坑爹的Pyinstaller

RuntimeError: maximum recursion depth exceeded while calling a Python object

解决方案

pyinstaller *.py,中途停止生成spec文件,在spec文件内加上

import sys
sys.setrecursionlimit(5000)

***********************************************************

运行exe时找不到module,pyinstaller *.py --hidden-import,或者直接在打包后的文件夹中添加库文件。

最保险的做法是把库先加到工程文件夹中,最后加到exe所在文件夹下。

***********************************************************

cannot import name ’*‘

解决方案:将ImageStat.py放入打包后的该文件所在库的文件夹中(例如以上为PIL)。

***********************************************************

qt.qpa.plugin: Could not find the Qt platform plugin "windows" in ""
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

从电脑中找到这四样东西拷贝到打包后的文件夹中坑爹的Pyinstaller_第1张图片

 

***********************************************************

运行exe文件时某个包出现不知名问题:

坑爹的Pyinstaller_第2张图片

感觉是torchvision出了问题,打包后的库总感觉不太对劲,用原来的torchvision库替换下就解决啦。

***********************************************************

如何在exe文件中解决下列图片显示问题,花了三天,差点要放弃的时候在国外网站的小角落里翻到了解决方案,泪流满面,下班回去奖励自己不烧饭了!!

1.首先将所需图片写入.qrc文件,再把.qrc转为.py,相当于把图片都存储到了py文件中,不需要再把原图拷贝到打包文件夹中。万能的网友们早已写好了脚本!

import subprocess, os

#图片所在文件夹
images = os.listdir('./images') 
#不太清楚,可以删除
qss = os.listdir('C:\qss')
#生成qrc资源文件
f = open('images.qrc', 'w+')
f.write(u'\n\n\n')

for item in images:
    f.write(u'images/'+ item +'\n')

for item in qss:
    f.write(u'qss/'+ item +'\n')

f.write(u'\n')
f.close()

#qrc转为py文件
pipe = subprocess.Popen(r'pyrcc5 -o images.py images.qrc', stdout = subprocess.PIPE, stdin = subprocess.PIPE, stderr = subprocess.PIPE, creationflags=0x08)

2.最后在程序中导入py文件,注意前面的:。

import images

icon.addPixmap(QtGui.QPixmap(':/images/logo.jpg'), QtGui.QIcon.Normal, QtGui.QIcon.Off)

3.最重要的一步来啦!把pyqt5文件夹下的plugins/imageformats拷贝到打包后的exe所在的文件夹下,因为需要提供对JPG格式的支持。

QPixmap::scaled: Pixmap is a null pixmap

***********************************************************

最后再记录一下打包过程,避免遗忘:

1.安装pyinstaller

2.pyinstaller 主程序.py

3.打包完成后到exe所在文件夹下在powershell中运行exe文件。

你可能感兴趣的:(python,pyinstaller)