赞
踩
教程千千万,貌似我的window电脑就是打包不了,而且不同电脑的表现都不一致,很是奇怪。
官方地址:
https://github.com/pyinstaller/pyinstaller
官方文档:https://pyinstaller.org/en/stable/
python版本要求: Python version 3.8-3.12.
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller #清华源
然后
Pyinstaller -F py_word.py 打包exe
Pyinstaller -F -w py_word.py 不带控制台的打包
Pyinstaller -F -w -i chengzi.ico py_word.py 打包指定exe图标打包
这里的参数设定:
来看看生成的文件都是什么:
.spec
:重要配置文件,.spec文件
中主要包含4部分:Analysis、PYZ、EXE、COLLECT:
spec
详解参考:
https://blog.csdn.net/kevinshift/article/details/104880101
其实如果你自己会写
.spec
,可以直接通过pyinstaller xx.spec
来执行打包
# -*- mode: python ; coding: utf-8 -*-
a = Analysis(['gui.py'],
pathex=['D:\\gui'],
binaries=[],
datas=[('D:\\gui\\config.ini','.'),('D:\\gui\\清洗规则.xlsx','.')],
hiddenimports=['pandas'],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
datas里边的元素是以元组的形式来存储的,有这么一个映射关系:
datas = [('源文件路径','目标路径')]
如果有多个,就多放几个元素,内容不限,如果目标路径是打包后的根目录,那就写.
修改好之后,运行这条命令即可:
pyinstaller xx.spec
其中datas和binaries注意,这是一个键值对,可以枚举一个或多个。
其中,前边的表示拷贝的文件,第二个表示拷贝的路径。
#注意,必须有'.'。否则报错:ValueError: too many values to unpack (expected 2)
#下面这个表示将文件\lib\general.pyc拷贝到当前文件夹下,就是解压的__MIE...等
binaries=[(r'\lib\general.pyc','.')],
#下面表示将\lib\general.xml拷贝到.\data文件夹下
datas=[(r'\lib\general.xml',r'.\data')],
#还可以整个文件夹的拷贝,或者一类文件的拷贝。如下设置了多个规则的
datas= [ ('/mygame/sfx/*.mp3', 'sfx' ) , #/mygame/sfx/文件夹下所有mp3
( '/mygame/data', 'data' ), #/mygame/data文件夹下所有文件
( 'src/README.txt', '.' ),
],
上面说了有时候我们需要另外添加资源文件,可以通过编辑spec文件,也可以通过命令行参数。
例如使用opencv的时候存在找不到视频编解码器的情况(Pyinstaller详细教程)
即找不到opencv_ffmpeg341_64.dll
这时候需要我们手动设置资源路径,
可以通过–add-binary参数设置,也可以在spec文件添加binaries参数,这个参数是个list,每个元素是个二元组
binaries=[('D:\\ProgramSourceCode\\PycharmProjects\\video_proc\\venv\\Lib\\site-packages\\cv2\\opencv_ffmpeg341_64.dll', './cv2')]
前一个代表原始资源路径,后一个代表拷贝到可执行文件夹的文件路径。
来自:https://blog.csdn.net/kevinshift/article/details/104880101
# 打包成一个exe文件
Pyinstaller -F py_word.py 打包exe
# 打包成一个文件夹
Pyinstaller py_word.py 打包exe
pyinstaller打包文件包含两种情况:
(1)将py文件、python及第三方库全部打包为一个单独的Exe中。
(2)将以上三者打包形成一个文件夹,文件夹中包含一个Exe,一个python,及其依赖的第三方库。
二者通过不同的选项
二者的优劣对比:
(a)启动时间
单一可执行文件比文件夹的启动时间要长
因为当程序运行时,单一的可执行文件需要解压程序的第三方依赖文件到临时文件夹中。
(b)文件结构
单一可执行文件的文件结构和工程目录是一样的,但是生成文件夹就不一样了,若程序中包含相对路径,这个相对路径自然基于的是文件夹目录,这点需要注意。
在打包过程出现问题时,可以生成文件结构,进入细致查看发生了什么。
一个当然是pip安装重新打包,还可以
pyinstaller -F xxxx.py --hidden-import=numpy --hidden-import=pandas --hidden-import=openpyxl
按照极简版,其可能会将你所有依赖打包,就会让文件变得非常大。
可以使用conda的虚拟环境
#创建虚拟环境
conda create -n aotu python=3.6
#激活虚拟环境
conda activate aotu
# 安装必要的依赖
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-docx
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple openpyxl
#Pyinstaller打包
Pyinstaller -F -w -i apple.ico py_word.py
安装完之后,可以在自己的虚拟镜像里面python x.py
试一下是否可以正常执行,就可以开始Pyinstaller
打包
加密打包
来自: https://zhuanlan.zhihu.com/p/470301078
虽然被如此轻松的解密手段
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。