Pyinstaller 转python脚本为可执行程序

2019-09-04

python程序的运行,往往依赖于python语言的解释器,比如spyder, pycharm, python IDLE。那么如何将python脚本打包成不依赖于python解释器的可执行程序呢?

简介

目的:编写一个可执行的、可跨电脑的、不依赖于python安装的程序,该程序可以统计某一个路径下的子文件夹和子文件的数目。

  • 借助Pyinstaller进行python脚本和可执行程序.exe文件的转换
  • 借助easygui进行弹出选择要统计的文件夹路径的窗口
  • 借助os模块进行遍历路径统计数目

模块安装

以上模块中,Pyinstaller和easygui需要事先安装,os不需要安装,因为是标准内置库。

# pip install PyInstaller

# pip install easygui

步骤

  • 首先,编写python 脚本,countFilesNum.py
  • 在countFilesNum.py所在的目录下,打开命令行窗口(Git bash here),输入pyinstaller -F countFilesNum.py 。运行结束后,会看到在工作目录下看到生成的三个新文件夹,build, dist和__pycache__文件夹。其中dist文件夹中就包含了countFilesNum.exe文件。
  • 双击dist文件夹中的countFilesNum.exe,即打开程序运行窗口。提示请选择路径,然后鼠标点击选择路径,即输出统计结果。
  • 程序运行结束后,窗口提示”Press Enter to exit…” ,所以点击回车键即结束并关闭窗口。
  • 最后,拷贝dist文件夹中的countFilesNum.exe 到其他位置或者其他电脑,双击即可运行。

Code

countFilesNum.py如下

# -*- coding: utf-8 -*-
"""
Created on Wed Aug 21 11:40:35 2019

@author: samsung
"""

import os
import easygui

def main(path):
    file_count = 0
    dir_count = 0
    for root, dirs, files in os.walk(path):
        for file in files:
            file_count += 1
        for folder in dirs:
            dir_count += 1
    print('统计完成!')
    print('该路径下共有{}个文件,{}个子文件夹'.format(file_count, dir_count))
    input("Press Enter to exit...")

if __name__ == "__main__":
    print('请选择要统计文件数目的路径')
    path = easygui.diropenbox()
    main(path)

code知识点总结

  • os.walk(path) 函数遍历路径十分方便
  • main()函数结束的一句,input("Press Enter to exit...") 可以实现运行结束后,不马上关闭窗口,而是等键入回车键以后再关闭窗口。
  • 执行代码中的一句path = easygui.diropenbox() 即是为了实现调出路径的选择窗口,很方便。还有函数file = easygui.fileopenbox() 以后可以为实现调出文件选择窗口使用。
  • pyinstaller -F countFilesNum.py 是pyinstaller的示例用法,可以查看其更多的help参数设置。此处的参数 -F是指打包成一个exe文件。

致谢