Python进阶-打包程序为exe
Posted Python莫言
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python进阶-打包程序为exe相关的知识,希望对你有一定的参考价值。
操作系统:win7 x64
运行环境:Python3.5
安装PyInstaller
第一步:下载PyInstaller
https://github.com/pyinstaller/pyinstaller
第二步:下载源码安装
在github中打包下载,解压到电脑中,运行命令行进入此目录。
//进入子目录 bootloader cd bootloader //build the bootloader 运行 python ./waf configure build install //重新进入根目录 cd .. //安装pyinstaller python setup.py install
第三步:配置虚拟环境
在按快捷键win+r输入cmd进入cmd(管理员)命令行
set Path=%Path%+刚才的解压目录; #例如set Path=%Path%+D:pyinstaller;
第四步:在命令行输入以下命令查看安装结果:
pyinstaller --version
打包程序
pyinstaller 路径main.py -F -w -i F:/图片/1.ico -n nginx管理工具 -p D:pythonPython36Libsite-packages ‘‘‘ 说明:红色部分是自己要打包的主程序路径; 红色部分之后的可选参数: -F:打包为单文件可执行程序,没有此参数的话会有很多其他文件跟可执行文件在一起 -w:是否是窗口程序,不指定的话,程序运行的时候有个控制台黑窗口 -i:可执行文件的图标 -n:可执行文件的名称 -p:打包时要包含的搜索目录,一般不用指定该项 其他参数可参照pyinstaller官方文档。 ‘‘‘
如果配置没有问题,敲下回车键,等待一会儿即可编译完成。在解压目录下会生成一个dist目录,在该目录里即可查看编译生成的可执行程序。
一般情况下,这个可执行文件就可以单独运行了。不过我的程序稍微复杂些,我的程序是一个flask写的web程序。直接运行的话一直报模板文件找不到的错误,把模板文件复制到同一目录下也不起作用。百度没有找到解决方法,最后Google出来了解决方案:在创建flask的app对象的时候加上这个判断即可:
from flask import Flask import sys import os app = None if getattr(sys, ‘frozen‘, False): template_folder = os.path.join(sys.executable, ‘..‘, ‘templates‘) static_folder = os.path.join(sys.executable, ‘..‘, ‘static‘) app = Flask(__name__, template_folder=template_folder, static_folder=static_folder) else: app = Flask(__name__)
接下来,再重新编译一下,把模板文件和可执行程序复制到同一目录,成功运行。
以上是关于Python进阶-打包程序为exe的主要内容,如果未能解决你的问题,请参考以下文章