zoukankan      html  css  js  c++  java
  • 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__)

    参考链接

     接下来,再重新编译一下,把模板文件和可执行程序复制到同一目录,成功运行。

  • 相关阅读:
    自定义滚动条原理
    多个轮播图或者选项卡显示在一个页面是,使用代码重用
    浮动与清除
    cni 添加网络 流程分析
    《MapReduce: Simplified Data Processing on Large Cluster 》翻译
    OpenStack overview 笔记
    docker containerd shim分析
    docker containerd 中的create 容器操作
    MIT jos 6.828 Fall 2014 训练记录(lab 6)
    docker containerd中的容器操作
  • 原文地址:https://www.cnblogs.com/Python-XiaCaiP/p/10161701.html
Copyright © 2011-2022 走看看