如何把python(.py或.ipynb)文件打包成可运行的.exe文件?

将 Python 程序打包成可执行的 .exe 文件,通常使用工具如 PyInstaller。这是一个常用的 Python 打包工具,可以将 Python 程序打包成独立的可执行文件,即使没有安装 Python 也能运行。

步骤:

1. 安装 PyInstaller

使用 conda 安装 PyInstaller

如果您使用的是 conda 环境,建议通过 conda 安装 PyInstaller:

conda install pyinstaller

这是在 conda 环境中进行安装的推荐方法,因为 conda 会自动处理依赖问题并确保兼容性。

用 pip 安装 PyInstaller

如果您使用的是 pip 作为包管理器,则可以使用以下命令安装:

pip install pyinstaller

这是在标准 Python 环境(非 conda 环境)中常用的方法。如果您没有使用 conda,pip 安装也是常见选择。

2. 进入你的项目目录

假设你已经将你的 Python 脚本(例如:main.pymain.ipynb)保存到某个目录中。使用命令行或终端进入这个目录:

cd path_to_your_python_script_directory

3. 使用 PyInstaller 打包为 EXE 文件

(1)处理 .py 文件的打包

如果你的 Python 文件已经是 .py 格式,直接使用 PyInstaller 打包即可。

pyinstaller --onefile --windowed main.py

如果您想给生成的 .exe 文件添加图标,可以使用 --icon 选项:

pyinstaller --onefile --windowed --icon=youricon.ico main.py

说明:

  • --onefile:生成单个可执行文件。
  • --windowed(或 -w):用于 Windows GUI 程序,这样生成的可执行文件在运行时不会弹出控制台窗口(适用于 GUI 应用,如 tkinter 程序)。
  • main.py:是你 Python 脚本的文件名,确保你把它替换成你的脚本名。
  • --icon=youricon.ico:为生成的 .exe 文件设置自定义图标。youricon.ico 是图标文件的路径,你可以替换成你希望使用的图标文件的路径。如果不加这个选项,则生成的 .exe 文件会使用默认图标。请确保图标是.ico格式
    其他可用的参数:
  • --clean:清除先前构建的临时文件(即清除 PyInstaller 构建缓存和临时文件夹)。(如果你想手动删除构建痕迹,也可以删除 PyInstaller 生成的 build/ 和 dist/ 目录,以及 .spec 文件)
  • --add-data: 将额外的文件或文件夹打包进可执行文件。
    例如:pyinstaller --add-data "path/to/datafile;./datafile" script.py
  • --key: 使用加密密钥对源代码进行加密,防止反编译。
    例如:pyinstaller --key "secretpassword" --onefile script.py
    PyInstaller 从 v6.0 开始已经移除了字节码加密功能,即 --key=xxx 参数不再被支持。

(2)处理 .ipynb 文件的打包

Jupyter Notebook (.ipynb) 文件无法直接使用 PyInstaller 打包成 .exe,你需要将 .ipynb 文件转换为 .py 文件后再进行打包。

  • 使用 Jupyter Notebook 提供的 nbconvert 工具:
jupyter nbconvert --to script main.ipynb

这会在同目录下生成一个 main.py 文件。
然后使用(1)中的步骤即可。

  • 或者你也可以使用Jupyter Notebook 的 GUI将.ipynb 文件导出为 .py 文件
    • 打开 Jupyter Notebook。
    • 在主页导航到你要转换的 .ipynb 文件所在的目录。
    • 点击文件打开 .ipynb 文件。
    • 在页面顶部的菜单栏中,选择 File(文件) -> Download as(另存为) -> Python (.py)。
    • Jupyter Notebook 会自动将 .ipynb 文件转换为 .py 文件并下载到你的本地。
  • 如果你是使用的vscode的jupyter插件,那也可以用GUI导出
    ctrl+shift+P弹出命令栏,输入导出
    在这里插入图片描述

4. 查找生成的 EXE 文件

打包完成后,PyInstaller 会在你的项目目录下创建一个 dist 文件夹,里面会有一个单独的 .exe 文件,例如:main.exe。你可以直接运行该文件,程序会以独立的应用程序形式启动。

例子:

假设你的 Python 脚本是 main.py,你可以这样运行:

pyinstaller --onefile --windowed main.py

PyInstaller 会在你的目录下创建如下的文件夹结构:

your_project/├── build/├── dist/│   └── main.exe   <-- 这是可执行文件└── main.spec

main.exe 就是你打包好的可执行文件。

5. 打包后的依赖问题

在某些情况下,打包后的可执行文件可能仍然依赖某些动态链接库或系统文件。如果你发现生成的 exe 文件在其他电脑上运行时缺少某些文件,可以考虑将程序打包成 --onedir 格式,并将整个目录一起分发。此命令如下:

pyinstaller --onedir --windowed main.py

这将生成一个包含所有依赖文件的目录,用户可以通过点击该目录中的 main.exe 文件来启动程序。

6. 使用 .spec 文件自定义打包(可选)

PyInstaller 会生成一个 .spec 文件,供你自定义打包过程。你可以在生成的 .spec 文件中修改打包的行为,然后再次使用 .spec 文件打包:

pyinstaller your_spec_file.spec

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

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

相关文章

风力发电机叶片表面缺陷识别检测数据集yolo数据集 共7000张

风力发电机叶片表面缺陷识别检测数据集yolo数据集 共7000张 风力发电机叶片表面缺陷识别数据集&#xff08;Wind Turbine Blade Defects Recognition Dataset, WTBDRD&#xff09; 摘要 WTBDRD 是一个专门为风力发电机叶片表面缺陷识别而设计的数据集&#xff0c;旨在为相关领…

HttpServletRequest简介

HttpServletRequest是什么&#xff1f; HttpServletRequest是一个接口&#xff0c;其父接口是ServletRequest&#xff1b;HttpServletRequest是Tomcat将请求报文转换封装而来的对象&#xff0c;在Tomcat调用service方法时传入&#xff1b;HttpServletRequest代表客户端发来的请…

HTML5好看的水果蔬菜在线商城网站源码系列模板2

文章目录 1.设计来源1.1 主界面1.2 商品列表界面1.3 商品详情界面1.4 其他界面效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/142059220 HTML5好看的水果蔬菜在线商城…

FortiGate OSPF动态路由协议配置

1.目的 本文档针对 FortiGate 的 OSPF 动态路由协议说明。OSPF 路由协议是一种 典型的链路状态(Link-state)的路由协议,一般用于同一个路由域内。在这里,路由 域是指一个自治系统,即 AS,它是指一组通过统一的路由政策或路由协议互相交 换路由信息的网络。在这个 AS 中,所有的 …

OTTO奥托机器人开发总结

OTTO机器人是一个开源外壳&#xff0c;硬件和软件的桌面机器人项目&#xff0c;非常适合新手研究和拓展。 我一直希望找一个合适的项目入手研究机器人&#xff0c;这种项目最好是软硬件都开源的&#xff0c;可以随着自己的想法无限的扩展和私人订制&#xff0c;做为初学者&…

Vue3:element-plus el-Table列表合计处理显示字符串类型/计算合计数值

需求整理 1.使用element组件库中的 el-table组件实现图上 底部当前页合计的功能。在一般的情况下&#xff0c;只需要计算数值部分的值&#xff0c;因为组件中的方法中处理的就是将值的类型转换成数值类型&#xff0c;像string类型的字符串的话&#xff0c;在进行转换的时候会出…

计算机毕业设计电影票购买网站 在线选票选座 场次订票统计 新闻留言搜索/springboot/javaWEB/J2EE/MYSQL数据库/vue前后分离小程序

系统功能 ‌在线选票选座‌&#xff1a;用户可浏览电影场次&#xff0c;选择座位并生成订单。‌场次订票统计‌&#xff1a;系统实时统计各场次订票情况&#xff0c;便于影院管理。‌新闻发布与留言‌&#xff1a;发布最新电影资讯&#xff0c;用户可留言互动。‌搜索功能‌&a…

springboot整合nacos

docker安装nacos参考docker安装各个组件的命令 一、目录结构 二、引入必要依赖 <!-- nacos服务注册与发现 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>…

接口加解密及数据加解密

目录 一、 加解密方式介绍 1.1 Hash算法加密 1.2. 对称加密 1.3 非对称加密 二、 我们要讲什么&#xff1f; 三、 接口加解密 四、 数据加解密 一、 加解密方式介绍 所有的加密方式我们可以分为三类&#xff1a;对称加密、非对称加密、Hash算法加密。 算法内部的具体实现…

数集相等定义凸显“R各元x的对应x+1的全体=R”是几百年重大错误

黄小宁 变量x所取各数也均由x代表&#xff0c;x代表其变域&#xff08;x所有能取的数组成的集&#xff09;内任一元。设集A&#xff5b;x&#xff5d;表A各元均由x代表&#xff0c;&#xff5b;x&#xff5d;中变量x的变域是A。其余类推。因各数x可是数轴上点的坐标所以x∈R变换…

Unity进阶之C#知识补充

概述 Unity跨平台的基本原理 了解.Net相关知识 Unity跨平台的基本原理&#xff08;Mono&#xff09; Unity跨平台的基本原理&#xff08;IL2CPP&#xff09; IL2CPP 模式可能存在的问题处理 报错的话就去下载 用到的测试类 C#版本和Unity的关系 C#各版本新功能和语法 C# 1~4 功…

怎样写论文及论文格式?分享4款ai论文生成软件

撰写一篇学术论文是一项复杂而系统的工作&#xff0c;需要从选题、文献综述、研究方法到最终的写作和修改等多个步骤。本文将详细介绍如何写好一篇论文&#xff0c;并推荐四款AI论文生成软件&#xff0c;特别是千笔-AIPassPaper。 如何写好一篇论文 1. 选题与题目表达 选题是…

消息中间件常见面试题(RabbitMQ)

MQ场景&#xff1a; 异步发送&#xff08;验证码、短信、邮件&#xff09;MySQL、Redis、ES之间的数据同步分布式事务等 一、RabbitMQ 1.1 消息不丢失 提问&#xff1a;如果保证消息不丢失呢&#xff1f; 流程&#xff1a;生产者将消息发送给交换机&#xff0c;交换机发送给…

FortiWLC 控制器系统恢复操作介绍

简介 对于 FortiWLC 控制器在有些实际操作过程中,会由于某些原因导致升级失败, 无法升级,或是系统文件错乱等情况, 对于这些问题,我们可以通过重新恢复控制 器系统来解决这些问题. 本文详细说明恢复控制器系统的操作步骤. 注意: 本操作需要通过串口登录到控制器设备上,另外在控…

Kubernetes 深入浅出系列 | 容器剖析之容器基本实现原理

一、容器基本实现原理 Docker 主要通过如下三个方面来实现容器化&#xff1a; ① 使用操作系统的 namespace 隔离系统资源技术&#xff0c;通过隔离 网络、PID 进程、系统信号量、文件系统挂载、主机名和域名&#xff0c;来实现在同一宿主机系统中&#xff0c;运行不同的容器&…

Linux之我不会

一、常用命令 1.系统管理 1.1 systemctl start | stop | restart | status 服务名 案例实操 1 查看防火墙状态 systemctl status firewalld2 停止防火墙服务 systemctl stop firewalld3 启动防火墙服务 systemctl start firewalld4 重启防火墙服务 systemctl restart f…

uni-app进度条

<template><view><canvas canvas-id"ring" id"ring" style"width: 200px; height: 180px;"><!-- <p>抱歉&#xff0c;您的浏览器不支持canvas</p> --></canvas></view> </template><…

Oracle逻辑备份脚本【生产环境适用】

1 说明 从Oracle10g开始&#xff0c;引入了数据泵&#xff08;Data Pump&#xff09;&#xff0c;是一种高效的数据传输工具&#xff0c;它通过导出&#xff08;Export&#xff09;和导入&#xff08;Import&#xff09;的方式帮助用户迁移数据。 在Oracle的产品设计中&#…

数据结构~二叉搜索树

文章目录 一、二叉树搜索的概念二、二叉树搜索的结构二叉树搜索的性能分析二叉树搜索的插入二叉树搜索的查找二叉树搜索的删除 三、二叉搜索树key和key/value使用场景四、二叉树搜索的练习将二叉搜索树就地转化为已排序的双向循环链表从前序与中序遍历序列构造二叉树二叉树的前…

1.3 MySql的用户管理

一、下载Mysql客户端 下载navicat:Navicat 中国 | 支持 MySQL、Redis、MariaDB、MongoDB、SQL Server、SQLite、Oracle 和 PostgreSQL 的数据库管理 二、安装Navicat 三、创建数据库 创建一个数据库的连接吧&#xff0c;因为这个界面儿是图形界面儿&#xff0c;所以我们创建…