在使用PyInstaller3.0之前 一直在研究cx_freeze的打包,简直用抓狂来形容,不是缺少module就是其他error,晚上下载了一个PyInstaller3.0,下载解压后不需要运行cmd 安装什么的, cd进入PyInstaller3.0目录,然后执行命令
需要注意一点的是PyInstaller的使用需要pywin32的支持, 需要下载对应版本的pywin32
pyinstaller -w .\oms\omsMain.py
此处 -w 是去掉exe窗体界面运行时的命令窗口
因为我的这个oms需要用到多个自己写的py文件,于是就把他们全部拷贝到了oms文件夹中,如果这里不拷贝过来的话会出现找不到自己写的module error ; omsMain.py是启动文件。
import sys
from omsUI import Ui_Dialog
from PyQt5.Qt import QDialog, QApplication
class OMSDialog(QDialog, Ui_Dialog):
def __init__(self):
super(OMSDialog,self).__init__()
self.setupUi(self)
def JustForPack():
import xlrd
import xlwt
import sqlite3
import os
from PyQt5 import QtCore, QtWidgets
from omsDb import dbOperator
from PyQt5.Qt import QStandardItemModel, \
QAbstractItemView, QModelIndex, QFileDialog, QMessageBox
if __name__ == '__main__':
app = QApplication(sys.argv)
dialog = OMSDialog()
dialog.show()
sys.exit(app.exec_())
此文件中有个函数JustForPack 这个函数里面包含了其他文件里面所使用到的库,还要注意设置系统环境变量,把PyInsaller目录和python34\Lib\site-packages也设置进去。
执行本文第一行命令后就会在当前路径中生成omsMain文件夹,omsMain内dist中就有需要的exe文件了。
执行命令后生成了omsMain文件夹
运行效果