最近在写一个开源项目,用到pyqt4,自然也就涉及到了发布程序。py2exe 没搞定,cx_Freeze遇到问题不好解决,所以第一次尝试当时放弃了,因为还没到发布的时候想把精力放在实现上。第二天群里有人提到pyinstaller,我就搜了一下,很不错,比较人性化。虽然遇到些小问题但是很快就解决了。
使用流程
1. 使用pyuic4把ui文件转成py文件,这样节省很多麻烦,当然也可以当做data集成进去这个方法我没细看,直接转成Py就可以用了
pyuic.bat main.ui -o mainRes.py
- 代码里添加引用,继承,还有setupUI,调试的时候使用loadUI直接使用ui文件。发布的时候注释一下
from mainRes import Ui_MainWindow
class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self):
super(MainWindow, self).__init__()
# self.ui = uic.loadUi('../resource/main.ui', self)
self.setupUi(self)
- 最关键也是最简单的一步,发布
pyinstaller -y --upx-dir E:\green\upx391w\ --clean MainWindow.py
我在这里遇到过一个小问题就是setuptools的版本过高带来的小bug,降到19.2就没问题了。anaconda自带的更低所以就没问题了。出错信息在公司所以没记录下来,家里面的版本没问题
刚刚生成exe被360杀掉了。还真是麻烦,退了先吧
最后生成的目录好吓人,N多文件和目录。
居然137M,好吧。