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实现简单客户端和服务端&…

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;用户无需拥…

【变量与常量】

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

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

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

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

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

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

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

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;开发者可能…

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

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

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

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

【C++LeetCode】【热题100】字母异位词分组【中等】-不同效率的题解【3】

题目&#xff1a; 暴力方法&#xff1a; class Solution { public:vector<vector<string>> groupAnagrams(vector<string>& strs) {std::unordered_set<std::string> uniqueWord;//单词字符唯一化集合vector<vector<std::string>>…

深入Android S (12.0) 探索Framework之输入子系统InputDispatcher的流程

Framework层之输入系统 第一篇 深入Android S (12.0) 探索Framework之输入系统IMS的构成与启动 第二篇 深入Android S (12.0) 探索Framework之输入子系统InputReader的流程 第三篇 深入Android S (12.0) 探索Framework之输入子系统InputDispatcher的流程 文章目录 Framework层…

微信小程序-界面提示框和消息

一.Loading加载框 小程序提供了wx.showLoading用来在加载界面的时候使用&#xff0c;比如加载图片和数据的时候可以使用。 常常和wx.hideLoading()配合使用&#xff0c;否则加载框一直存在。 其效果如下&#xff1a; 代码如下&#xff1a; //显示加载消息wx.showLoading({//提…

【机器学习】Lasso回归:稀疏建模与特征选择的艺术

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 Lasso回归&#xff1a;稀疏建模与特征选择的艺术引言一、Lasso回归简介1.1 基本…

丰臣秀吉-读书笔记五

如今直面自己一生中的最高点&#xff0c;加之平日里的觉悟与希冀&#xff0c;此时此地他“一定要死得其所”。 “武士之道&#xff0c;便是在死的瞬间决定一生或华或实。一生谨慎、千锤百炼&#xff0c;如果在死亡这条路上一步走错&#xff0c;那么一生的言行便全部失去真意&am…

帕金森的锻炼方式

帕金森病&#xff0c;这个看似陌生的名词&#xff0c;其实离我们并不遥远。它是一种常见的神经系统疾病&#xff0c;影响着许多中老年人的生活质量。虽然帕金森病目前尚无根治之法&#xff0c;但通过科学合理的日常锻炼&#xff0c;可以有效缓解病情&#xff0c;提高生活质量。…

录的视频太大怎么压缩?这几款软件真的很不错!

在数字化时代&#xff0c;视频已成为我们日常生活和工作中不可或缺的一部分。无论是记录生活点滴&#xff0c;还是制作工作汇报&#xff0c;视频都以其直观、生动的特点赢得了我们的青睐。然而&#xff0c;随着视频质量的提升&#xff0c;视频文件的大小也在不断增加&#xff0…

内容安全复习 2 - 网络信息内容的获取与表示

文章目录 信息内容的获取网络信息内容的类型网络媒体信息获取方法 信息内容的表示视觉信息视觉特征表达文本特征表达音频特征表达 信息内容的获取 网络信息内容的类型 网络媒体信息 传统意义上的互联网网站公开发布信息&#xff0c;网络用户通常可以基于网络浏览器获得。网络…