python程序打包成exe全流程纪实(windows)

目录

  • 前言
  • 准备工作
    • 安装python(必须)
    • 安装vs平台或conda(非必须)
  • 详细步骤
    • Step1.创建python虚拟环境
      • 方法一、裸装(windows下)
      • 方法二、借助工具(windows下)
    • Step2.安装打包必须的python包
    • Step3.准备好程序logo(非必须)
    • Step4.将python程序放入Scripts
    • Step5.命令打包
      • 1)打开cmd命令行,cd进入Scripts文件夹:
      • 2)激活当前虚拟环境
      • 3)指令打包
  • 后记

前言

python程序只能在安装了python及依赖包的电脑上才能运行,如果我们已经开发了一款可用的桌面软件,并想提供给未安装环境的用户使用,就需要打包成exe文件,打包成exe还有好处是:

  1. 方便用户使用:用户可以直接双击exe文件来运行程序,不需要安装Python解释器和库。
  2. 保护源代码:打包后的exe文件无法直接查看源代码,可以起到一定的保护作用。
  3. 隐藏细节:用户不需要了解程序是用Python编写的,只需要关注功能和界面。
    在这里插入图片描述

目前,常用的python打包exe工具有PyInstaller、Py2exe、cx_Freeze等。一般的做法是先使用这些工具将Python程序及所依赖的库文件一起打包进去。然而,打包Python程序成exe也存在一些困难:

  1. 库依赖问题:如果程序依赖某些第三方库,打包时需要确保这些库也被打包进exe文件中,以便程序能够正常运行。
  2. 文件大小问题:由于exe文件需要包含Python解释器和所依赖的库,打包后通常会比源代码大很多。
    本篇将向读者介绍,如何在windows平台(linux平台也适用)将一个python程序打包成一个exe,并且做到文件大小的合理控制。
    在这里插入图片描述

准备工作

安装python(必须)

直接从官网下载python安装包,双击安装就可以。
在这里插入图片描述

安装vs平台或conda(非必须)

如果想管理python项目依赖包方便,可以使用vs或者conda、pycharm等IDE平台。对python项目的必须的包进行管理。我这里用的是vs,并安装了python的一个插件。可以一键生成虚拟环境及依赖所需requirements.txt文件,便于项目的移植。
在这里插入图片描述

详细步骤

Step1.创建python虚拟环境

可以通过多种途径创建python的虚拟环境,在没有任何IDE软件工具情况下,python在windows下和linux下都支持以命令行的方式创建虚拟环境:

方法一、裸装(windows下)

打开命令窗口,输入以下指令:
(1)创建虚拟环境-myenv

python -m venv myenv

在这里插入图片描述
运行命令后,会在当前文件夹下生成虚拟环境:
在这里插入图片描述

(2)激活虚拟并进入环境-myenv

myenv\Scripts\activate

这里其实虚拟环境的exe文件在Scripts文件夹里面。其它文件夹分别是头文件,和依赖包。
在这里插入图片描述
(2)在虚拟环境-myenv中安装所需的包
如果项目一键制作的安装包文件,可以通过命令一键安装:

pip install -r requirements.txt

在这里插入图片描述

当然,这里可能涉及到安装源的问题,国内国外安装速度不同。
安装前可以更换源为国内源(来自网络未亲自验证):

要更换pip安装源为清华大学python源,可以按照以下步骤进行操作:
1、打开pip文件夹:在文件夹地址栏中输入 %APPDATA%,然后按回车键进入该路径。
2、创建pip.ini文件:在刚刚打开的pip文件夹下,创建一个名为pip.ini的文件。
3、编辑pip.ini文件:将以下代码复制到pip.ini文件中,并保存。
[global]
index-url=https://pypi.tuna.tsinghua.edu.cn/simple

[install]
use-mirrors=true
mirrors=https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host=pypi.tuna.tsinghua.edu.cn

方法二、借助工具(windows下)

(3)通过vs、conda等工具创建虚拟环境,并安装所需的包(推荐)
以下以vs为例:
可以通过vs工具,将myenv虚拟环境添加进项目并激活:
在这里插入图片描述
在vs中有可视化的菜单,创建虚拟环境,同时可以生成requirements.txt
在这里插入图片描述
可以通过安装包管理或右键“从requirements.txt安装”,进行依赖包的安装:
在这里插入图片描述

Step2.安装打包必须的python包

在以上虚拟环境下,安装以下2个打包必须的包:

pyinstaller
pywin32

在这里插入图片描述

Step3.准备好程序logo(非必须)

可以用画图或其它工具做一个logo。
在这里插入图片描述

Step4.将python程序放入Scripts

将需要打包的*.py程序放入虚拟环境对应的Scripts这个文件夹中:
在这里插入图片描述

Step5.命令打包

1)打开cmd命令行,cd进入Scripts文件夹:

在这里插入图片描述

2)激活当前虚拟环境

输入activate激活当前环境:

activate

在这里插入图片描述

3)指令打包

输入以下指令后按回车打包:

pyinstaller -F -i yourpath\logo.png yourpromgramme.py

等待后,打包完成:
在这里插入图片描述
exe文件出现在了Scripts下的自动创建的dist文件夹下
在这里插入图片描述
我这个由于程序依赖了opencv等重型包,文件稍微大一些,但这个大小可以接受。
生成的exe文件可以在其它电脑运行了。
在这里插入图片描述

后记

通过这篇博文,我详细介绍了如何将Python程序打包成exe文件的全流程。从安装依赖库到使用pyinstaller进行打包,再到解决打包过程中可能遇到的问题,我尽力提供了详细的步骤和解决方案。

这篇博文的目的是帮助那些想要将自己的Python程序分享给其他人,但又不希望其他人需要安装Python环境的开发者。通过将程序打包成exe文件,其他人只需双击运行,即可使用该程序。

在写这篇博文的过程中,我不仅重新回顾了打包过程,还遇到了一些问题,解决了一些bug。通过动手实践和总结,我对Python程序打包成exe的流程有了更深入的理解。

希望这篇博文对读者有所帮助,让大家能够更方便地分享和使用Python程序。在以后的博文中,我还会继续分享更多关于Python开发的经验和技巧,希望大家能够继续关注和支持。谢谢!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

51单片机定时器

51单片机有两个16位定时器,今天复习了一下使用方法,发现当初刚开始学习51单片机时并没有记录,特此今天补上这篇博客。 下面是定时器的总览示意图,看到这个图就能想到定时器怎么设置,怎么开始工作。 第一步&#xff1a…

刷完这个笔记,18K不能再少了....

大家好,最近有不少小伙伴在后台留言,得准备年后面试了,又不知道从何下手!为了帮大家节约时间,特意准备了一份面试相关的资料,内容非常的全面,真的可以好好补一补,希望大家在都能拿到…

EmbedAI:一个可以上传文件训练自己ChatGPT的AI工具,妈妈再也不用担心我的GPT不会回答问题

功能介绍: 个性化定制:提供灵活的训练选项,用户能够通过文件、网站、Notion文档甚至YouTube等多种数据源对ChatGPT进行训练,以满足不同领域和需求的个性化定制。广泛应用场景:ChatGPT支持多种用例,包括智能…

Jmeter吞吐量控制器使用小结

吞吐量控制器(Throughput Controller)场景: 在同一个线程组里, 有10个并发, 7个做A业务, 3个做B业务,要模拟这种场景,可以通过吞吐量模拟器来实现.。 添加吞吐量控制器 用法1: Percent Executions 在一个线程组内分别建立两个吞吐量控制器, 分别放业务A和业务B 吞吐量控制器采…

【算法系列篇】递归、搜索和回溯(三)

文章目录 前言什么是决策树1. 全排列1.1 题目要求1.2 做题思路1.3 代码实现 2. 子集2.1 题目要求2.2 做题思路2.3 代码实现 3. 找出所有子集的异或总和再求和3.1 题目要求3.2 做题思路3.3 代码实现 4. 全排列II4.1 题目要求4.2 做题思路4.3 代码实现 前言 前面我们通过几个题目…

蚂蚁集团5大开源项目获开放原子 “2023快速成长开源项目”

12月16日,在开放原子开源基金会主办的“2023开放原子开发者大会”上,蚂蚁集团主导开源的图数据库TuGraph、时序数据库CeresDB、隐私计算框架隐语SecretFlow、前端框架OpenSumi、数据域大模型开源框架DB-GPT入选“2023快速成长开源项目”。 (图…

Kafka中Ack应答级别和数据去重

在Kafka中,保证数据安全可靠的条件是: 数据完全可靠条件 ACK级别设置为-1 分区副本大于等于2 ISR里应答的最小副本数量大于等于2; Ack应答级别 可靠性总结: acks0,生产者发送过来数据就不管了,可靠性差…

2023年国赛高教杯数学建模D题圈养湖羊的空间利用率解题全过程文档及程序

2023年国赛高教杯数学建模 D题 圈养湖羊的空间利用率 原题再现 规模化的圈养养殖场通常根据牲畜的性别和生长阶段分群饲养,适应不同种类、不同阶段的牲畜对空间的不同要求,以保障牲畜安全和健康;与此同时,也要尽量减少空间闲置所…

人工智能深度学习:探索智能的深邃奥秘

导言 人工智能深度学习作为当今科技领域的明星,正引领着智能时代的浪潮。深度学习和机器学习作为人工智能领域的两大支柱,它们之间的关系既有协同合作,又存在着显著的区别。本文将深入研究深度学习在人工智能领域的角色,以及其在各…

Android Termux安装MySQL数据库并通过内网穿透实现公网远程访问

文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备,尽管最初并非设计为服务器,但是随着技术的进步我们可以将Android配置为生产力工具,变成一个随身…

鸿蒙端H5容器化建设——JSB通信机制建设

1. 背景 2023年鸿蒙开发者大会上,华为宣布为了应对国外技术封锁的潜在风险,2024年的HarmonyOS NEXT版本中将不再兼容Android,并推出鸿蒙系统以及其自研的开发框架,形成开发生态闭环。同时,在更高维度上华为希望将鸿蒙…

GPT-4V被超越?SEED-Bench多模态大模型测评基准更新

📖 技术报告 SEED-Bench-1:https://arxiv.org/abs/2307.16125 SEED-Bench-2:https://arxiv.org/abs/2311.17092 🤗 测评数据 SEED-Bench-1:https://huggingface.co/datasets/AILab-CVC/SEED-Bench SEED-Bench-2&…

基于主动安全的AIGC数据安全建设

面对AIGC带来的数据安全新问题,是不是就应该一刀切禁止AIGC的研究利用呢?答案是否定的。要发展AIGC,也要主动积极地对AIGC的数据安全进行建设。让AIGC更加安全、可靠的为用户服务。为达到此目的,应该从三个方面来开展AIGC的数据安…

C++中的并发多线程网络通讯

C中的并发多线程网络通讯 一、引言 C作为一种高效且功能强大的编程语言,为开发者提供了多种工具来处理多线程和网络通信。多线程编程允许多个任务同时执行,而网络通信则是现代应用程序的基石。本文将深入探讨如何使用C实现并发多线程网络通信&#xff…

【Netty】Netty核心概念

目录 NIO编程NIO介绍NIO和BIO的比较缓冲区(Buffer)基本介绍常用API缓冲区对象创建添加数据读取数据 通道(Channel)基本介绍Channel常用类ServerSocketChannelSocketChannel Selector (选择器)基本介绍常用API介绍示例代码 NIO 三大核心原理 Netty核心概念Netty 介绍原生 NIO 存…

verilog基础语法-计数器

概述: 计数器是FPGA开发中最常用的电路,列如通讯中记录时钟个数,跑马灯中时间记录,存储器中地址的控制等等。本节给出向上计数器,上下计数器以及双向计数器案例。 内容 1. 向上计数器 2.向下计数器 3.向上向下计数…

Minio文件服务器(上传文件)

官网:https://www.minio.org.cn/ 开源的分布式对象存储服务器 Window安装 用户名和密码相同 创建bucket,并且将策略改成public 一、添加依赖 二、代码 public class FileUploadTest{public static void main(String[] args) throws Exception{//…

RHEL8_Linux_Ansible常用模块的使用

本章主要介绍Ansible中最常见模块的使用 shell模块文件管理模块软件包管理模块服务管理模块磁盘管理模块用户管理模块防火墙管理模块 ansible的基本用法如下。 ansible 机器名 -m 模块x -a "模块的参数" 对被管理机器执行不同的操作,只需要调用不同的模块…

做计算,找天玑算!

天玑算科研服务_DFT计算_MD模拟_FEA_ML_相图计算200余位计算工程师均来自己TOP高校及科研院所,涉及第一性原理,分子动力学,有限元,机器学习,可为催化、电池、能源、化工、生物等重多领域提供技术支持,计算软…

基于Springboot的旅游网站设计与实现(论文+调试+源码)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…