目录
目录
4.1.1 模块找不到的错误 —— ModuleNotFoundError
4.1.4 'pyinstaller' 不是内部或外部命令……
一、小知识
1.1 exe文件?
EXE File英文全名executable file ,译作可执行文件,可移植可执行 (PE) 文件格式的文件,它可以加载到内存中,并由操作系统加载程序执行,是可在操作系统存储空间中浮动定位的可执行程序。
1.2为什么要打包为 exe ?
众所周知,Python 程序的运行必须要有 Python 的环境,(因为Python 是解释性语言,它与 C 或者 C++ 等编译型语言不同,C 或者 C++ 都是要编译再运行的。)但是程序编出来怎么方便的给别人使用呢?为了便捷,在电脑上可不安装环境下运行各类文件,这时我们就要将 Python 程序打包为 exe 文件。
1.3打包模块
用 Python 的 Pyinstaller 模块进行打包
网上教程众多,不墨迹,直接实战
二、打包实战
2.1直接在虚拟环境下进行
打开 Anaconda Prompt,激活环境,直接安装好打包库当然可以重新创建一个比较干净的环境,这样打包起来文件会小一些。
2.2切换命令行进入文件路径
因为你要打包的文件在对应的文件夹里面,而 Pyinsatller 一开始是不知道要打包的文件在哪里的,所以要直接切换命令行的路径到目标文件夹路径,使得后面的步骤中,Pyinstaller 可以找到对应的文件。
cd 你程序的路径目录
这里我的打包文件夹放在了桌面上,文件夹名为 py脚本,要打包的 Python 文件在 脚本文件夹内,名为 videocat.py 。于是我的文件夹路径为
2.3代码示例
在代码中有输入输出,压缩率等参数是需要设置的,那就要考虑到打包后的输入输出
2.4修改一下输入输出
把原先写死的路径都换成input让用户自己灵活输入和保存,增加一点点细节即可
import cv2
import argparse
import os
def process_video(i_video, o_video, num, size):
cap = cv2.VideoCapture(i_video)
num_frame = cap.get(cv2.CAP_PROP_FRAME_COUNT) #获取总帧数
print(num_frame)
expand_name = '.jpg'
if not cap.isOpened():
print("Please check the path.")
return
cnt = 0
count = 0
while True: #1:
ret, frame = cap.read()
cnt += 1
if cnt % num == 0:
count += 1
cv2.imwrite(os.path.join(o_video, str(count) + expand_name), frame,[int(cv2.IMWRITE_JPEG_QUALITY), size]) # 设置保存参数,保证高画质---- 默认95
if not ret:
break
cap.release() #释放视频流对象
while True: # 用户设置阶段
try:
i_video_path = input('请输入你的视频文件所在路径(如:F:/新建文件夹,注意是/斜杠和英文冒号):') # 获取视频文件路径
if not os.path.exists(i_video_path): # 判断文件路径是否存在
print('你输入的文件路径有误,请重新输入!')
else:
print('————文件路径匹配成功!🚀🚀————')
break
except NameError:
print('重输路径')
while True:
try:
video_name = input('请输入你的mp4视频文件名(不需要加后缀,如:我的视频):') # 获取视频文件名
video = i_video_path + "/" + video_name + ".mp4" # 格式 avi
if not os.path.exists(video) or video_name == '':
print('你输入的文件名有误,请重新输入!')
if os.path.exists(video) and video_name != '':
print('————视频文件匹配成功!————')