python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
本文介绍一个exe打包工具pyinstaller,使用非常简单、方便,而且还跨平台。
软硬件环境
- Windows 10 64bit
- PyQt5
- Anaconda with python 3.6.5
- pyinstaller
- apscheduler
- sqlalchemy
pyinstaller安装
命令行中执行
pip install pyinstaller
pyinstaller打包exe
示例还是以之前的为例,解压进入工程目录,命令行执行打包命令
pyinstaller -F --distpath release main.py
其中release是目标文件夹,main.py是工程入口文件,-F表示生成一个可执行文件。
pyinstaller的打包参数很多,需要的话通过help来查看
pyinstaller -h
subprocess打包问题
在打包包含subprocess.Popen时发现,加上参数--noconsole时产生的exe文件在运行的时候,进程并没有正确运行。比如需要利用subprocess.Popen创建一个进程去执行一个命令行操作,
mProcess = subprocess.Popen(cmd,stdin=subprocess.DEVNULL, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,universal_newlines=True)
pyinstaller打包操作命令如下
pyinstaller -F --noconsole --clean --distpath release main.py
打包后生成的exe,可以运行,不过查看进程并没有如预期正确地工作。
解决方法是在创建进程时,加上startupinfo参数,如下
si = subprocess.STARTUPINFO()
si.dwFlags |= subprocess.STARTF_USESHOWWINDOW
mProcess = subprocess.Popen(cmd,stdin=subprocess.DEVNULL, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,universal_newlines=True,startupinfo=si)
问题完美解决,具体可以参考文末的资料
apscheduler打包问题
项目中用到了apscheduler这个库,用来做定时任务非常的好,使用也很简单,不过在pyinstaller打包的时候,出现了如下错误
解决方法是,编辑文件/usr/local/lib/python3.5/dist-packages/apscheduler/__init__.py
# These will be removed in APScheduler 4.0.
# release = __import__('pkg_resources').get_distribution('APScheduler').version.split('-')[0]
# version_info = tuple(int(x) if x.isdigit() else x for x in release.split('.'))
# version = __version__ = '.'.join(str(x) for x in version_info[:3])
release = (3,3,1)
version_info = '3.3.1'
version = '3.3.1'
3.3.1是我安装的apscheduler的版本号,视实际情况修改。
接下来创建一个名称为hook-ctypes.macholib.py,内容如下
# -*- coding: utf-8 -*- from PyInstaller.utils.hooks import copy_metadata datas = copy_metadata('apscheduler')
最后执行打包命令
pyinstaller -F --clean --additional-hooks-dir hooks --distpath release main.py
sqlalchemy打包问题
在用pyinstaller打包一个使用了sqlalchemy库的python3工程中,碰到了打包后的可执行文件报错的问题,如下图所示
解决方案是,将sqlalchemy.dialects中的mysql引入,然后采用mysql+pymysql的方式打开数据库,代码如下
import pymysql from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.dialects import mysql username = 'xugaoxiang' passwd = '123456' server = '192.168.0.100' port = '3306' dbname = 'djdb' cmd_connect = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(username, passwd, server, port, dbname) engine = create_engine(cmd_connect)
执行pyinstaller打包命令
pyinstaller -F --clean --distpath shark main.py
好了,至此pyinstaller打包python程序为exe安装文件的其实操作就算完成了,如果出现其它问题请直接联系我们,更多关于这方面的相关知识请查看下面的相关链接
您可能感兴趣的文章:
- Python中用pyinstaller打包时的图标问题及解决方法
- python pyinstaller打包exe报错的解决方法
- 详解pyinstaller selenium python3 chrome打包问题
- Python程序打包工具py2exe和PyInstaller详解
- python-pyinstaller、打包后获取路径的实例
- Python打包方法Pyinstaller的使用
- 用PyInstaller把Python代码打包成单个独立的exe可执行文件
- python学习笔记--将python源文件打包成exe文件(pyinstaller)
- 利用pyinstaller或virtualenv将python程序打包详解
- Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
- 如何将Python的py程序打包成跨平台的exe文件
- python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
- python学习===将py文件从打包成exe程序
- 在python3.6环境下将py文件打包成exe程序
- python打包.py文件为exe文件,无需安装python环境
- 如何利用Python2.7、py2exe、PyInstaller-2.1将*.py打包成*.exe,再利用Inno Setup Compiler封装成windows安装文件
- 【python】使用pyinstaller将py文件打包成exe可执行程序
- [Python]项目打包:5步将py文件打包成exe文件
- anaconda和python的版本对应关系,清华镜像下载,将py文件打包为exe文件
- 用py2exe将py文件打包成exe程序
- 利用pyinstaller将Python3.6文件打包成exe程序
- “failed to excute script xxx” PyInstaller 打包python程序为exe文件过程错误
- 将python程序打包为exe可执行文件
- cxfreeze的安装问题 以及将打包Python3.4 成exe文件
- asp.net 开发的WEB项目和数据库打包成exe安装文件
- python程序使用pyinstaller打包成单一.exe文件后,如何的到.exe文件所在目录?
- 将Python文件打包成exe的两种方法(pyinstaller和py2exe)之py2exe篇
- python 文件py 打包成exe
- 用LabVIEW打包EXE应用文件和打包程序安装文件的方法
- Android 开发中,如何将多个程序打包成一个apk文件,但是安装完成后显示多个程序?