Python 生成 Windows 执行档教学 (Pyinstaller, PowerShell)

壹、前言

将 python 程序封装,使用者将更便於使用,而不需担心设定 python 环境
macOS 还好说,系统有附带 python,但 windows 系统下要执行就麻烦了
最近刚好有需求,故对此研究,不料踩到微软精心准备的陷阱,浪费不少时间
因此写下此笔记作为奋战纪录
本文以生成 windows 执行档为前提,着重在环境设定的问题排解
=> 想更好的阅读体验,请到Notion 同篇笔记(排版略有差异)

贰、环境确认

要封装 python 程序,首先环境要正确
感觉很直觉,但实际上坑还蛮深的,陷进去却不知道错在哪
所以请就下面几点检视一下自己的环境 >w<

  1. 终端机环境必须是 Windows 系统 (生成 windows 执行档为前提)

    • WSL (Windows Subsystem Linux)
    • ❌ Linux 虚拟机的 Shell
    • ❌ macOS 的 Terminal
    • ✅ Windows PowerShell
    • CMD (命令提示字元)

    pyinstaller 生成的执行档与系统挂勾
    因此,若想用 pyinstaller 生成「能在windows系统下执行的执行档」
    就必须在 windows 系统中使用 pyinstaller 处理
    ShellTerminal 自不用说,因为环境本来就不是 windows
    至於 WSL,也就是依附在 Win10 下的 Linux base 附属系统
    这个附属系统属於 Linux 系统,用起来会比 PowerShell 顺心,但在此派不上用场
    备注:如果打包成品要在 x32 系统执行,那就必须在 x32 系统上打包,反之则不用

  2. Python 来源有限制

    • ❌ Microsoft Store 安装的 python
    • ✅ 由 python 官网下载安装的 python

    pyinstaller 的 github 页面有提到,使用 Microsoft Store 版本的 python 会导致权限错误
    根据实测,使用 Microsoft Store 除了权限错误,还需要解决环境变数问题

参、手把手设定环境

虽说是手把手,但我已先假设你用的是 windows 10

a. 安装 python

已经正常安装与设定的略过
重申一次,不可用 Microsoft Store 安装的 python,这是孔明的陷阱

  1. python 官网 下载最新版的 python 安装程序
    根据 pyinstaller 的 github 页面,需要 python 3.5-3.8,实测 3.9 也可以运行
  2. 执行安装程序,勾选「Add Python x.x to PATH」,执行安装

b. 安装 pyinstaller

  1. 开启 PowerShell (不知如何开启,请参照 「陆、附录 在指定目录位置开启 PowerShell」)

  2. 安装 pyinstaller

    pip install pyinstaller
    
  3. 确认版号,出现版号即表示安装成功

    pyinstaller --version
    

肆、疑难排解

若 pyinstaller 安装成功可显示版号,可跳过此章节

无法辨识 'pyinstaller' 词汇是否为 Cmdlet、函数、指令档或可执行程序的名称

  • 以上错误,可能是因为「python 环境变数未设定成功」,因此找不到已安装的指令。
  • 请遵循「陆、附录 设定 python 环境变数」设定

PermissionError: [Errno 13] Permission denied: ...

  • 以上错误,可能是因为「使用 Microsoft Store 安装的 python」
  • 请遵循「参、手把手设定环境 a. 安装 python」设定 python

伍、使用 Pyinstaller 打包

终於来到正题了

  1. 在要打包的程序目录开启 PowerShell (不知如何开启,请参照 「陆、附录 在指定目录位置开启 PowerShell」)
  2. 打包
    pyinstaller -F <python file>   # 打包成单执行档,适合小档
    pyinstaller -D <python file>   # 打包成多个文件,适合框架类程序
    
  3. 现在可以在生成的 dist 资料夹中找到打包的程序

陆、附录

意下属於查找工具,如果已经正常运行,就不需要看罗

在指定目录位置开启 PowerShell

  1. win + e 开启档案总管,选择希望终端开启时的目录位置
  2. Shift + 滑鼠右键,开启选单
  3. 开启 PowerShell

设定 python 环境变数

如果安装时忘记设定环境变数,会导致安装 pyinstaller 後找不到该指令
可以使用 python 安装程序来设定

  1. python 官网 下载最新版的 python 安装程序

  2. 执行安装程序,勾选「Add Python to environment variable」,执行安装



<<:  (DAY 30) MS Teams 新功能介绍

>>:  (後记) 突破一般视讯会议限制的视讯设备

电子书阅读器上的浏览器 [Day29] 网页载入性能改善

原以为一个不到 3MB (扣除挡广告的资料档)的 Andrid App,既没有任何的 trackin...

Day25 X ESR: Rendering On The Edge

基本上 CDN 是现在的 Web 应用不可或缺的技术,当对被 CDN 加速过的域名发出请求时,CD...

Kotlin Android 第11天,从 0 到 ML - Kotlin Coroutine

前言: Kotlin Coroutine , Coroutin (中文翻 “协程” )这个词在and...

【第十六天 - 动态规划 介绍】

Q1. 动态规划(Dynamic Programming)是什麽 ? Dynamic program...

Python Time套件

今天我要来教大家是个套件,套件名称叫做time,顾名思义就是有关时间的套件。有时候我们会绍定在某个时...