python代码生成可执行文件

以下面转换图片尺寸的代码resize_images.py为例:

代码功能:原始图片放在img文件夹中,然后运行代码可以转换成指定分辨率,保存在同一目录下的新生成的文件夹中

import os
import sys
import cv2
from datetime import datetime
from tqdm import tqdmdef resize_image(image_path, target_size):"""Resize the image to the target size."""image = cv2.imread(image_path)resized_image = cv2.resize(image, (target_size, target_size))return resized_imagedef process_images_in_directory(directory, target_size):"""Resize all images in the specified directory to the target size and save them in the output directory."""timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")output_directory = os.path.join(os.getcwd(), f"resized_{target_size}x{target_size}_{timestamp}")if not os.path.exists(output_directory):os.makedirs(output_directory)image_files = [f for f in os.listdir(directory) if f.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.tiff'))]total_images = len(image_files)print(f"Processing images from directory: {directory}")print(f"Total images to process: {total_images}")for idx, filename in enumerate(tqdm(image_files, desc="Resizing images", unit="image")):image_path = os.path.join(directory, filename)resized_image = resize_image(image_path, target_size)# Save the resized imageresized_image_path = os.path.join(output_directory, filename)cv2.imwrite(resized_image_path, resized_image)print(f"Resized images are saved in {output_directory}")if __name__ == "__main__":if len(sys.argv) != 2:print("Usage: python resize_images.py <target_size>")sys.exit(1)try:target_size = int(sys.argv[1])except ValueError:print("Target size must be an integer.")sys.exit(1)# Get the directory of images, which is in the current directory under 'img'current_directory = os.getcwd()image_directory = os.path.join(current_directory, 'img')if not os.path.exists(image_directory):print(f"Image directory {image_directory} does not exist.")sys.exit(1)process_images_in_directory(image_directory, target_size)

要将你的Python项目打包,使其在其他计算机上运行而不需要用户手动配置环境,你可以使用几种方法。其中一种有效的方法是使用 PyInstaller 来创建一个可执行文件。PyInstaller 可以将Python程序及其所有依赖项打包到一个单独的可执行文件中,适用于Windows、Linux和MacOS。

一、安装PyInstaller

pip install pyinstaller

二、Pylnstaller介绍

PyInstaller 是一个强大的工具,它可以将 Python 程序打包成独立的可执行文件。它支持多种参数来控制打包过程。下面是一些常用的 PyInstaller 参数:

基本选项

  • --name=NAME:指定输出文件的名称。
  • --onefile-F:将所有文件打包成一个单独的可执行文件。
  • --onedir-D:将所有文件打包到一个目录(默认方式)。
  • --windowed-w:不显示控制台窗口(适用于 GUI 应用)。
  • --console-c:显示控制台窗口(默认方式,适用于命令行应用)。

路径和搜索相关

  • --paths=DIR:在分析时添加搜索路径,可以指定多个。
  • --additional-hooks-dir=HOOKSPATH:添加外部的钩子(hooks)目录。
  • --runtime-tmpdir=PATH:指定解压缩临时文件的目录。
  • --specpath=DIR:放置生成的 spec 文件的目录。

数据和资源

  • --add-data=<SRC;DEST or SRC:DEST>:添加数据文件。
  • --add-binary=<SRC;DEST or SRC:DEST>:添加二进制文件。
  • --upx-dir=DIR:指定 UPX 压缩工具的路径,如果安装了 UPX。
  • --upx-exclude=FILE:指定不用 UPX 压缩的文件。

钩子和导入

  • --hidden-import=MODULENAME:指定隐藏的导入,即代码中没有显式导入的模块。
  • --exclude-module=MODULENAME:排除特定的模块。
  • --collect-submodules=MODULENAME:收集指定模块的所有子模块。

输出和调试

  • --log-level=LEVEL:设置日志级别(例如 INFO, DEBUG, WARN)。
  • --clean:清理 PyInstaller 缓存和临时文件,然后退出。
  • --noconfirm:覆盖输出目录(如果存在)而不询问。
  • --debug:生成用于调试的可执行文件。

配置和版本信息

  • --version-file=FILE:包含版本信息的文件,用于资源。
  • --manifest=FILE:包含 Windows manifest 文件,可以控制某些权限和系统兼容性。

其他

  • --key=KEY:用于加密 Python 字节码的密钥。
  • --icon=ICON_FILE:为可执行文件指定一个图标文件。

使用示例

例如,你可以通过以下命令创建一个没有控制台的窗口应用,包含外部数据和图标:

pyinstaller --onefile --windowed --icon=app.ico --add-data="datafile.txt;." your_script.py

这条命令将生成一个单文件的应用,不显示控制台窗口,包含一个图标和一个数据文件。

这些参数可以帮助你根据特定需求自定义 Python 应用的打包过程。更详细的参数说明可以通过命令 pyinstaller --help 查看或访问 PyInstaller 的官方文档。

三、使用 PyInstaller 打包你的脚本:

你可以运行以下命令来创建一个独立的可执行文件。这个命令将分析你的脚本,找出所有必要的库,并将它们打包。

pyinstaller --onefile resize_images.py

PyInstaller 将在 dist 文件夹中创建可执行文件。你可以在这个文件夹中找到名为 resize_images.exe 的文件。
在这里插入图片描述
生成可执行文件后,可以放到任何地方运行,不需要额外的环境,上面的build文件夹也不需要

四、测试可执行文件

可执行文件双击就可以运行,不过要传入分辨率的值,所以不能直接双击运行,除非python代码里默认了目标分辨率,不用传入,那就可以直接双击运行。

下面是带参数运行的方式

1. 方式一:在cmd终端中运行

在这里插入图片描述

2. 编写脚本运行

为了简洁,新建一个exe文件夹放可执行文件
在这里插入图片描述
“双击转换成512”脚本内容,其它的同理可得

@echo off
.\exe\resize_images.exe 512
pause

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/857011.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在React中,如何利用React.memo函数对函数组件进行优化?

React.memo 是 React 的一个高阶组件&#xff0c;用于对函数组件进行性能优化。它通过记忆化&#xff08;memoization&#xff09;来避免不必要的重新渲染。当组件的 props 没有变化时&#xff0c;React.memo 可以防止组件重新渲染&#xff0c;从而提高应用的性能。 使用 Reac…

wireshark抓包ssl数据出现ignored unknown record的原因

文章目录 前言一、出现原因二、wireshark抓包分析Ignored Unknown RecordTCP segment of a reassembled PDU 总结 前言 使用下面这个例子来观察记录层数据大于TCP MSS时用wireshark抓包出现ignored unknown record的情况并分析原因。 c语言利用openssl实现简单客户端和服务端&…

【LinuxC语言】sigaction

文章目录 前言功能函数定义struct sigaction 结构体使用示例总结前言 在Linux系统编程中,信号(Signal)是一种重要的进程间通信机制。信号可以用来通知进程发生了某个事件,比如中断、终止、非法内存访问等。处理信号的方式有多种,其中sigaction是一个强大且灵活的函数,用…

Rich Human Feedback for Text-to-Image Generation 读论文笔记

Rich Human Feedback for Text-to-Image Generation 读论文笔记 摘要方法细节收集数据的过程人类反馈确认 数据集VQA使用方法数据分析分数统计评价一致性&#xff08;pair alignment&#xff09; 实验模型模型架构模型变体模型其他优化 实验MetricsScoreHeatmapMisalignment 量…

什么是NLP-自然语言处理

什么是NLP-自然语言处理 什么是NLP开通NLP新建项目创建模型 什么是NLP NPL是面向算法小白用户的行业自适应标注、训练和服务平台。该产品支持文本实体抽取、文本分类、关键短语抽取、情感分析、关系抽取、短文本匹配、商品评价解析等 NLP 定制化算法能力&#xff0c;用户无需拥…

香港云服务器怎么处理高并发和突发流量?

处理香港云服务器的高并发和突发流量需要综合考虑多种因素&#xff0c;包括服务器配置优化、负载均衡、缓存策略、CDN加速以及监控和自动化调整等措施。以下是处理高并发和突发流量的一些关键步骤和建议&#xff1a; 1. 优化服务器配置 选择高性能实例&#xff1a;根据预期的并…

git-diff详解

NAME git-diff - Show changes between commits, commit and working tree, etc SYNOPSIS git diff [<options>] [<commit>] [--] [<path>…​] git diff [<options>] --cached [--merge-base] [<commit>] [--] [<path>…​] git diff …

【变量与常量】

1.基本程序 容器用来存放物品 声明变量 num 是个用来装整数的变量 &#xff01; 一 个整数变量需要 4 个 byte 存储&#xff0c; 计算机 在内存里为你分配了 4 个 byte 。int num;在代码中&#xff0c;声明一个变量。 常用变量类型 存储不同类型的数据需要声明不同类型的变…

Steam怎么购买黄金树之影 购买了黄金树之影怎么下载DLC教程

《艾尔登法环》大型DLC“黄金树幽影”将于6月21日正式上线&#xff0c;为广大玩家带来全新的冒险与挑战。在“黄金树幽影”中&#xff0c;玩家将拥有专属的强化系统。通过收集探索幽影之地获得的“幽影树的碎片”和“灵灰的加护”&#xff0c;不仅可以大幅度提升玩家的攻击力与…

【从零到一】电子元器件网站建设/开发方案、流程及搭建要点全解

电子元器件行业在数字化转型的大潮下也迎来了前所未有的发展机遇。一个高效、专业、用户友好的电子元器件网站&#xff0c;不仅能够提升品牌形象&#xff0c;还能显著提高销售转化率&#xff0c;增强客户粘性。道合顺芯站点将详细阐述电子元器件开发方案、实施流程&#xff0c;…

[信号与系统]FIR滤波器的几种常见窗口法计算方法

FIR滤波器的几种常见窗口法计算方法 1. 矩形窗口&#xff08;Rectangular Window&#xff09; 矩形窗口直接截断理想脉冲响应&#xff0c;无额外的平滑效果。它简单但会引入较大的旁瓣效应。 w [ n ] 1 , 0 ≤ n ≤ N − 1 w[n] 1, \quad 0 \le n \le N-1 w[n]1,0≤n≤N−1…

从混乱到有序:SRM系统如何优化工厂采购流程

一、工厂采购管理的重要性 工厂采购管理是企业运营中的关键环节&#xff0c;它直接影响到生产成本、产品质量和市场响应速度。有效的采购管理能够降低成本、提升供应链的灵活性和响应市场变化的能力。在竞争激烈的市场环境中&#xff0c;采购管理的优劣直接关系到企业的竞争力…

django filter 批量修改

django filter 批量修改 在Django中&#xff0c;如果你想要批量修改记录&#xff0c;可以使用update()方法。这个方法允许你在一个查询集上执行批量更新&#xff0c;而不需要为每条记录生成单独的数据库事务。 以下是一个使用update()方法批量修改记录的例子&#xff1a; fro…

HarmonyOS角落里的知识—Stage模型应用程序

开发态包结构 在DevEco Studio上创建一个项目工程&#xff0c;并尝试创建多个不同类型的Module。根据实际工程中的目录对照本章节进行学习&#xff0c;可以有助于理解开发态的应用程序结构。 图1 项目工程结构示意图&#xff08;以实际为准&#xff09; 工程结构主要包含的文…

解释React中的“端口(Portals)”是什么,以及如何使用它来渲染子节点到DOM树以外的部分。

React中的“端口&#xff08;Portals&#xff09;”是一种将子节点渲染到DOM****树以外的部分的技术。在React应用中&#xff0c;通常情况下组件的渲染是遵循DOM的层次结构&#xff0c;即子组件会渲染在父组件的DOM节点内部。然而&#xff0c;有些情况下&#xff0c;开发者可能…

2023-2024山东大学移动互联网开发期末回忆

1、考试时间&#xff1a;2024/6/20 2、考试科目&#xff1a;移动互联网开发&#xff08;安卓开发&#xff09;&#xff08;老师&#xff1a;Lin Fengbo&#xff09; 一、名词解释 十几个词里面挑八个解释&#xff0c;建议50-100字 二、简答题 1.选择一种你喜欢的&#xff…

java数据格式处理

概述 记录一下常用的数据格式处理。千分位分隔符、四舍五入。 代码 /*** 数据格式化工具类* author *** since ***/ public class DataFormatUtil {private DataFormatUtil() {throw new IllegalStateException("工具类不要实例化");}public static String format…

4K高质量视频素材库,剪辑必备

找免费4K 高质量视频素材&#xff0c;就上这8个网站&#xff0c;剪辑必备&#xff0c;赶紧收藏吧&#xff01; 1、baotu 【实拍视频】免费下载_实拍视频素材​ibaotu.com/shipin/7-5026-0-0-0-1.html?spmzhkolws​编辑 国内高质量素材网站&#xff0c;涵盖设计、新媒体、视频…

Text2SQL基座模型选择的实战教程(持续更新)

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

有效提升智能会议系统语音识别准确性案例分享

语音识别技术是在智能会议系统中至关重要&#xff0c;准确的智能会议语音识别能力&#xff0c;意味着会议参与者可以通过语音命令来控制会议设备&#xff0c;如开启投影仪、调整音量、切换幻灯片或者记录会议纪要&#xff0c;节省时间并提高会议效率。多语言支持的语音识别技术…