首页 > 代码库 > 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提示),(uYES),QtGui.QMessageBox.Yes)            else:                QtGui.QMessageBox.information(self, (u提示),(uNO),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文件