首页 > 代码库 > pyinstaller打包pyqt文件
pyinstaller打包pyqt文件
如何将pyqt生成exe的二进制文件呢,pyinstaller就是这样的工具
可以将脚本文件.py 文件转换为编辑后的二进制文件,在进行发布
下面说下,如果打包
一. 安装:
下载地址:https://github.com/pyinstaller/pyinstaller
最新版本pyinstaller2.1.1 (2015-01)
python setup.py install
pyinstaller 是有依赖包的,安装之前必须要安装pywin32, 在网上找到对应版本的pywin32.msi
二. 写一个要打包的py文件
# -*- coding: utf-8 -*-import sysfrom PyQt4 import QtGui, QtCoreclass buttonRedrect(QtGui.QWidget): def __init__(self): super(buttonRedrect, self).__init__() self.setWindowTitle(‘Mouse Event‘) self.setWindowIcon(QtGui.QIcon(‘QQ.png‘)) self.labels = QtGui.QLabel(u‘点我试试!‘, self) self.labels.setGeometry(50, 50, 150, 50) self.labels.mouseReleaseEvent = self.events def events(self, event): ev=event.button() if ev== QtCore.Qt.LeftButton: OK = QtGui.QMessageBox.information(self, (u‘提示‘),(u‘左键‘),QtGui.QMessageBox.Yes , QtGui.QMessageBox.No) if OK==QtGui.QMessageBox.Yes: QtGui.QMessageBox.information(self, (u‘提示‘),(u‘YES‘),QtGui.QMessageBox.Yes) else: QtGui.QMessageBox.information(self, (u‘提示‘),(u‘NO‘),QtGui.QMessageBox.Yes) elif ev == QtCore.Qt.RightButton: OK = QtGui.QMessageBox.warning(self, (u‘提示‘),(u‘右键‘),QtGui.QMessageBox.Yes , QtGui.QMessageBox.No) elif ev == QtCore.Qt.MiddleButton: OK = QtGui.QMessageBox.question(self, (u‘提示‘),(u‘滚动轴‘),QtGui.QMessageBox.Yes , QtGui.QMessageBox.No)app=QtGui.QApplication(sys.argv)buttonr=buttonRedrect()buttonr.show()sys.exit(app.exec_())
三. 文件打包
在要打包的同级目录下,新建一个pyinstaller.py, 内容如下
#! /usr/bin/env python#-----------------------------------------------------------------------------# Copyright (c) 2013, PyInstaller Development Team.## Distributed under the terms of the GNU General Public License with exception# for distributing bootloader.## The full license is in the file COPYING.txt, distributed with this software.#-----------------------------------------------------------------------------"""Main command-line interface to PyInstaller."""# from PyInstaller import *import osif __name__ == ‘__main__‘: from PyInstaller.main import run opts=[‘abc.py‘,‘-F‘,‘-w‘,‘--icon=favicon.ico‘] run(opts)
其中opts是参数,将参数修改成你要的需求
-- 参数说明:
-F, --onefile Py代码只有一个文件
-D, --onedir Py代码放在一个目录中(默认是这个)
-K, --tk 包含TCL/TK
-d, --debug 生成debug模式的exe文件
-w, --windowed, --noconsole 窗体exe文件(Windows Only)
-c, --nowindowed, --console 控制台exe文件(Windows Only)
-o DIR, --out=DIR 设置spec文件输出的目录,默认在PyInstaller同目录
--icon=<FILE.ICO> 加入图标(Windows Only)
-v FILE, --version=FILE 加入版本信息文件
将命令行CMD切换切换到当前要打包的目录
F:\project\pyqt\TEST>
输入命令:
python pyinstaller.py
等5,6秒pyinstaller的INFO编译完成之后,目录里面就多出两个文件夹 build 和 dist, 其中 dist 里面就是二进制的打包文件
--遇到的问题:
在给打包文件添加icon的时候,报错
File "C:\Python27\lib\site-packages\pyinstaller-2.1.1dev_-py2.7.egg\PyInstaller\build.py", line 320, in __postinit__ self.assemble() File "C:\Python27\lib\site-packages\pyinstaller-2.1.1dev_-py2.7.egg\PyInstaller\build.py", line 1245, in assemble icon.CopyIcons(tmpnm, self.icon) File "C:\Python27\lib\site-packages\pyinstaller-2.1.1dev_-py2.7.egg\PyInstaller\utils\icon.py", line 170, in CopyIcons hsrc = win32api.LoadLibraryEx(srcpath, 0, LOAD_LIBRARY_AS_DATAFILE)pywintypes.error: (193, ‘LoadLibraryEx‘, ‘%1 \xb2\xbb\xca\xc7\xd3\xd0\xd0\xa7\xb5\xc4 Win32 \xd3\xa6\xd3\xc3\xb3\xcc\xd0\xf2\xa1\xa3‘)
当时我选择的icon参数是: --icon=favicon.png
后来把icon格式改为favicon.ico,才可以, 且 icon的参数不能带 " ‘ " or ‘ " ‘
pyinstaller打包pyqt文件