Python程序发布 Pyinstaller打包

第一步:安装 Pyinstaller

pycharm的话直接到镜像地址装包
在这里插入图片描述
使用pip安装的使用命令行:
记得先把pip的位置添加到环境变量。
默认pip的位置在python安装目录的scripts里。
在这里插入图片描述
也可以指定pycharm给你创建的python工程文件里面的pip
比如:
在这里插入图片描述
我把这两个地方都加到环境变量中了:
在这里插入图片描述
放在上面的黄色框那个pip会优先生效!
在这里插入图片描述
最后是:pip安装轮子的命令(使用清华镜像地址安装美滋滋~)

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller
Pyinstaller开始打包

(一)命令行来打包:
官方帮助:

usage: pyinstaller [-h] [-v] [-D] [-F] [--specpath DIR] [-n NAME]
                   [--add-data <SRC;DEST or SRC:DEST>]
                   [--add-binary <SRC;DEST or SRC:DEST>] [-p DIR]
                   [--hidden-import MODULENAME]
                   [--additional-hooks-dir HOOKSPATH]
                   [--runtime-hook RUNTIME_HOOKS] [--exclude-module EXCLUDES]
                   [--key KEY] [-d {all,imports,bootloader,noarchive}] [-s]
                   [--noupx] [--upx-exclude FILE] [-c] [-w]
                   [-i <FILE.ico or FILE.exe,ID or FILE.icns>]
                   [--version-file FILE] [-m <FILE or XML>] [-r RESOURCE]
                   [--uac-admin] [--uac-uiaccess] [--win-private-assemblies]
                   [--win-no-prefer-redirects]
                   [--osx-bundle-identifier BUNDLE_IDENTIFIER]
                   [--runtime-tmpdir PATH] [--bootloader-ignore-signals]
                   [--distpath DIR] [--workpath WORKPATH] [-y]
                   [--upx-dir UPX_DIR] [-a] [--clean] [--log-level LEVEL]
                   scriptname [scriptname ...]

实际命令:

pyinstaller -F -w "Tkinter 棋盘.py" --icon=tkinterLearn/Icons/drawing-box.ico

解析:
1、前面放参数,然是工程文件,还有程序在桌面看到的图标(如果是程序左上角图标我一般是弄成base64存入程序中)!
2、-F:表示打包为一个单独的exe(不写或者写-D就是打包为一个文件夹里面各种组件)
3、-w或者-c:选择程序运行是否会运行cmd,一般都是选-w隐藏cmd就好了,如果你要看cmd报错可以直接用cmd来开你的程序也是ok的。

报错了:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 30: invalid start byte

在这里插入图片描述

解决问题:

1、说要打开管理员模式:试了没效的…
2、最后试了要带上 --icon=这7个字符才可以呐,哈哈
在这里插入图片描述
最后打包后,出来就这样啦~
在这里插入图片描述

打包的第二个方法:

pyinstaller不是轮子吗?
那我们可以写个通用的打包代码呐!
那不就不用经常重复写了吗?哈哈
(这里再加上upx压缩~)(不过在pyqt5中夹压缩,程序就失效了…,我一般打包tkinter才加,还是python原生的支持好,哈哈)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__title__ = '将TargetOpinionMain python项目转换为exe文件'
__author__ = 'harry'
__email__ = '619342297@qq.com'
"""
# pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller
from PyInstaller.__main__ import run

if __name__ == '__main__':
    r = r"C:\Users\Administrator\PycharmProjects\bilibili_down01\tkinterLearn\drawing-box.ico"
    opts = ['closenetAndrenet.py',
            # r'--icon=' + r,
            '-c',  # -w/-c不显示/显示:cmd窗口,
            '-F',
            # r'--upx-dir=C:\Users\Administrator\Downloads\Compressed\upx-3.96-win64',
            # '--upx-exclude=vcruntime140.dll',
            ]
    run(opts)

看情况把注释打开就可以灵活实用了~哈哈,upx的压缩可以使程序再压缩个2-3Mb左右呢!
实测:Tkinter整个界面包加这个后打包,保持在6Mb左右,不加在8Mb左右!pyqt5的还是蛮大的,适合写大点的软件哈哈,30Mb起步了~
在这里插入图片描述

问题收集:
1、有时候打包成功,但是运行pyqt5程序打不开,报错:

在这里插入图片描述
cmd命令行是这样写的:

pyinstaller -F -w MarkTime_v1.0.py

这种情况:还是重新打一次包,设置“-w”为“-c”即运行程序时打让开cmd,这样才能看到报错。

pyinstaller -F -c MarkTime_v1.0.py

然后使用powershell运行一下程序:
在这里插入图片描述
报错:ModuleNotFoundError: No module named 'PyQt5,居然说没有 PyQt5 库,那我们指定下轮子的所在路径 就好啦!更改下命令:

pyinstaller -F -w MarkTime_v1.0.py -p ../Lib/site-packages

在这里插入图片描述
ok,解决问题~
在这里插入图片描述

补充链接

Pyinstaller如何将资源文件一起打包至exe中

pyinstaller no module named 'pkg_resources.py2_warn’解决方法

pychaim下PyInstaller 打包 python程序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值