用pyinstaller打包python代码为exe可执行文件并在其他电脑运行的方法

  本文介绍基于Python语言中的pyinstaller模块,将写好的.py格式的Python代码及其所用到的所有第三方库打包,生成.exe格式的可执行文件,从而方便地在其他环境其他电脑中直接执行这一可执行文件的方法。

  有时,我们希望将自己电脑上的某个Python文件发到另一台电脑上使用;而如果这个Python文件中包含了大量的第三方库,那么首先不仅需要保证另一台电脑上有Python环境,而且还需要配置好这些第三方库——这无疑是比较麻烦的。但是,我们可以选择将Python文件(及其所包含的全部第三方库)打包为.exe文件,然后发送给其他电脑并直接加以执行;而这个打包的过程,基于Python语言中的pyinstaller模块,就可以非常方便地进行。本文就介绍一下这个打包的具体方法。

  但是需要注意,pyinstaller模块打包后的可执行文件是不可以跨平台使用的——例如,在Windows上将一个Python代码文件打包,得到的可执行文件就只能在Windows上使用,而在LinuxMac上是不可以使用的;如果大家有这样跨平台使用的需求,pyinstaller模块的官方网站则建议借助Wine来代替实现。

  首先,我们需要配置一下Python语言中的pyinstaller模块。这里需要注意,如果大家待打包的这个Python代码文件是放在了虚拟环境中,那么这个pyinstaller模块也需要配置在这个虚拟环境中。

  在本文中,因为我的待打包文件就是在虚拟环境中,所以首先通过如下的代码进入这一虚拟环境中。其中,关于Python虚拟环境的创建与使用,大家可以参考文章Anaconda中Python虚拟环境的创建、使用与删除(https://blog.csdn.net/zhebushibiaoshifu/article/details/128334614)。

conda activate py39

  随后,输入如下的代码,即可开始配置pyinstaller模块。

pip install pyinstaller

  运行上述代码,如下图所示。

  随后,找到我们需要加以打包的Python代码文件;如下图所示,这个紫色框内的Alignment.py文件就是本文中需要打包的Python代码文件。

  那么,首先通过cd命令,进入待打包文件所在的路径;在本文中,这里就是执行如下的代码。

cd F:\Data_Reflectance_Rec\code

  随后,进入这个文件夹内,我们即可通过如下的命令,将Alignment.py文件加以打包。

pyinstaller -F Alignment.py

  其中,-F表示对Alignment.py文件打包时,只生成唯一的1.exe可执行文件;一般情况下,我们都是带上这个-F参数来运行打包命令的,因为只生成1.exe可执行文件的话,更方便后期我们对这个可执行文件的分享。

  此外,我们还可以在上述代码中加入如下的其他常见参数;当然,除此之外还会有很多其他的参数,具体大家参考pyinstaller模块的官方网站(https://pyinstaller.org/en/stable/index.html)即可。

-h:显示关于pyinstaller命令的帮助。
-D:如果不想要前面-F的效果,那就用这个-D,从而生成多个可执行文件。
-i:如果大家想修改打包后生成的可执行文件的图标,就将自己的图标文件放在这个参数后。
-w:如果大家待打包的Python代码会生成一个GUI界面,那么需要添加此参数,否则后期打开可执行文件时,你的GUI界面可能会被自动弹出的黑色的控制台遮盖导致无法正常显示。

  对于大多数需求而言,我们就用上述的那一句代码即可。执行上述代码,出现如下图所示的界面,表明已经开始打包了。

  稍等片刻(如果待打包的Python代码文件中导入的第三方库比较多,那么打包的时间相对就会长一点,但整体不会太久),出现如下图所示的提示,表明打包已经成功完成了。

  此时,我们在与待打包Alignment.py文件同目录的路径中,可以看到pyinstaller模块对其打包后生成的3个新的文件夹或文件,如下图所示。

  其中,打开dist这个文件夹,其中的.exe可执行文件,就是我们打包后的文件。

  接下来,在这台电脑,或者是其他人的电脑中,运行上图中的这个.exe可执行文件,就会实现和我们当初待打包的Alignment.py文件相同的功能。

  如下图所示,我这里因为原本的Alignment.py文件是一个对数据加以计算的文件,所以运行打包后的可执行文件时,就会出现一个黑色的控制台,而没有其他的变化。

  至此,大功告成。

欢迎关注:疯狂学习GIS

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

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

相关文章

基于springboot的助农管理系统的设计与实现

** 🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅** 一 、设计说明 1.1研究背…

【网站项目】219一中体育馆管理系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

pywin32,一个超强的 Python 库!

更多Python学习内容:ipengtao.com 大家好,今天为大家分享一个超强的 Python 库 - pywin32。 Github地址:https://github.com/mhammond/pywin32 在Python的世界里,有许多优秀的第三方库可以帮助开发者更轻松地处理各种任务。其中&a…

【性能】后台与黑屏

目录 现象观察 调整应用的电池策略 现象观察 切换到后台, 一个心跳期间,就会发close socket 直接黑屏,没有收到任何消息,直接到onclose,然后有离线触发 也到时间。 调整应用的电池策略 修改成“无限制”后,就不会断…

Linxu自动化构建工具make/Makefile究竟时什么?

Linxu自动化构建工具make/Makefile究竟时什么? 一、简介二、makefile文件制作(简洁版)2.1 源文件2.2 makefile如何制作2.2.1 依赖关系、依赖方法2.2.3 伪目标(清理文件资源) 三、make/Makefile自动化原理3.1 伪目标为什…

SpringBoot+Vue实现el-table表头筛选排序(附源码)

👨‍💻作者简介:在笑大学牲 🎟️个人主页:无所谓^_^ ps:点赞是免费的,却可以让写博客的作者开心好几天😎 前言 后台系统对table组件的需求是最常见的,不过element-ui的el…

Grpc项目集成到java方式调用实践

背景:由于项目要对接到grcp 的框架,然后需要对接老外的东西,还有签名和证书刚开始没有接触其实有点懵逼。 gRPC 是由 Google 开发的高性能、开源的远程过程调用(RPC)框架。它建立在 HTTP/2 协议之上,使用 …

D7805 正电压稳压电路应用——体积小,成本低,性能好

D7805 构成的 5V 稳压电源为输出电压5V,输出电流 1000mA 的稳压电源它由滤波电容 C1,C3,防止自激电容 C2、C3 和一只固定三端稳压器(7805)后级加 LC 滤波极为简洁方便地搭成,输入直流电压范围为 7~35V,此直流电压经过D…

yolov8-更换卷积模块-ContextGuidedBlock_Down

源码解读 class ContextGuidedBlock_Down(nn.Module):"""the size of feature map divided 2, (H,W,C)---->(H/2, W/2, 2C)"""def __init__(self, nIn, dilation_rate2, reduction16):"""args:nIn: the channel of input fea…

Hack The Box-Bizness

目录 信息收集 nmap dirsearch WEB Get shell 提权 get user flag get root flag 信息收集 nmap 端口扫描┌──(root㉿ru)-[~/kali/hackthebox] └─# nmap -p- 10.10.11.252 --min-rate 10000 -oA port Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-04 1…

力扣 第 387 场周赛 解题报告 | 珂学家 | 离散化树状数组 + 模拟场

前言 整体评价 手速场模拟场,思路和解法都蛮直接的。 所以搞点活 如果T2,如果不固定左上角,批量查询某个点为左上角,求满足总和 ≤ k \le k ≤k的子矩阵个数 如果T2,如果不固定左上角,求总和 ≤ k \le k…

Spring的Bean的生命周期 | 有图有案例

Spring的Bean的生命周期 Spring的Bean的生命周期整体过程实例化初始化服务销毁循环依赖问题 完整生命周期演示 Spring的Bean的生命周期 Spring Bean的生命周期:从Bean的实例化之后,通过反射创建出对象之后,到Bean称为一个完整的对象&#xf…

快上车:什么是人工智能?人工智能和普通程序的区别

什么是人工智能? 虽然AI历史很悠久,上个世纪50年代就有各种概念,但是发展很慢。第一次对人类的冲击就是1997年IBM深蓝击败国际象棋世界冠军,引起了人们的广泛关注,之后又销声匿迹。突然间2016人工智能alphaGO战胜了围…

具身智能计算系统,机器人时代的 Android | 新程序员

【导读】具身智能作为一种新兴的研究视角和方法论,正在刷新我们对智能本质及其发展的理解:传统的 AI 模型往往将智能视为一种独立于实体存在的抽象能力,而具身智能则主张智能是实体与其环境持续互动的结果。 本文深度剖析了具身智能计算系统…

程序员如何选择职业赛道?

一、自我评估与兴趣探索 程序员选择职业赛道时,可以考虑以下几个关键因素: 1、兴趣与热情:首先要考虑自己的兴趣和热情,选择符合个人喜好和激情的领域,能够激励自己持续学习和进步。 2、技术能力&am…

mysql5.7配置主从

原理: MySQL主从复制的工作原理如下:1. 主服务器产生Binlog日志当主服务器的数据库发生数据修改操作时,如INSERT、UPDATE、DELETE语句执行,主服务器会记录这些操作的日志信息到二进制日志文件中。2. 从服务器读取Binlog日志 从服务器会向主服务器发送请求,主服务器把…

微信小程序开发学习笔记《18》uni-app框架-网络请求与轮播图

微信小程序开发学习笔记《18》uni-app框架-网络请求 博主正在学习微信小程序开发,希望记录自己学习过程同时与广大网友共同学习讨论。建议仔细阅读uni-app对应官方文档 一、下载网络请求包 这个包是以前黑马程序员老师写的一个包,跟着课程学习&#x…

Open3D(C++) 指定点数的体素滤波

目录 一、算法原理1、算法过程2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、算法过程 对于数据量较大的点云,在后期进行配准时会影响计算效率。而体素格网…

LCR 170. 交易逆序对的总数

解题思路: 归并排序,在归并的过程中不断计算逆序对的个数 count mid -i 1;的来源见下图,因为两个数组都是单调递增的,所以如果第一个数组的前一个元素大于第二个数组的对应元素,那么第一个数组的这一元素…

借助Aspose.SVG图像控件,在 C# 中将图像转换为 Base64

Base64 编码是一种二进制到文本的编码方案,可有效地将二进制数据转换为 ASCII 字符,为数据交换提供通用格式。在某些情况下,我们可能需要将JPG或PNG图像转换为 Base64 字符串数据。在这篇博文中,我们将学习如何在 C# 中将图像转换…