第二节 PyInstaller的两种打包模式

1. 文件夹模式打包

2. 单文件模式打包

3. build, dist和spec文件(夹)简介


PyInstaller可以把python程序打包成多个文件并放入一个文件夹中,也可以把程序只打包成一个可执行文件。通常我们比较倾向后者,因为拷贝起来更加方便,使用起来也更加简单。在该小节中,笔者会介绍如何用两种方式进行打包,并且会介绍下打包后生成的三个文件(夹)。

笔者知道学完本节的话,部分读者可能会立即去打包,但是打包可能会出错,或者是运行出错。别急,后面章节会讲怎么解决错误的。

1. 文件夹模式打包

现在在桌面新建一个文件夹名为la_vie,文件夹中有一个名为belle的py文件(笔者在之后的讲解中都会拿这个py文件来进行打包演示):

我们在belle.py文件中输入以下代码:

import osprint('Hello World')os.system('pause')    # 暂停程序,好看清输出内容

我们可以打开命令行窗口,然后输入pyinstaller C:/Users/Desktop/la_vie/belle.py (不推荐)

或者可以直接cd到项目路径下,输入pyinstaller belle.py即可打包:

注:cd命令其实比较麻烦,更快的方法是直接在项目文件夹中同时按住shift键和鼠标右键,选择在“此处打开命令行窗口“(或者是"在此处打开Powershell窗口"),之后在弹出的命令行窗口中我们发现路径已经是正确的了。笔者在讲解中将都使用该方法,省去cd命令。

打包成功的话,我们可以在最后看到类似这样的语句"Building...completed successfully":

接着我们发现项目文件夹下多出了三个文件(夹),名称分别是build,dist和belle.spec,而我们需要的可执行文件就在dist文件夹中。点击进入dist文件夹后,会发现有一个belle文件夹 ,这个文件夹就是我们需要的了——其中有可执行文件以及相关依赖。

然后我们双击打开exe可执行文件,在弹出的"黑框"中(也就是命令行窗口)出现了"Hello World"字符串,程序运行成功。

注:打包成功跟运行成功是两个概念。前者指成功生成可执行文件,而后者指可执行文件运行没有问题,打包成功不代表程序运行没问题。

2. 单文件模式打包

所谓单文件模式打包就是打包后在dist文件夹中只有一个可执行文件,全部的依赖文件都已经被打包进去了。这样很方便,对不怎么懂编程或者电脑操作不是很熟练的客户来讲也比较友好。

要把belle.py打包成一个文件,我们只需要加一个-F命令:

pyinstaller -F belle.py

打包成功后,我们在dist文件夹中双击生成的可执行文件,同样弹出黑框,并显示”Hello World“字符串:

注:虽然单文件模式打包后的结果比较友好,但通常遇到的问题和麻烦比文件夹模式打包要更多,笔者会在之后章节进行讲解。

3. build, dist和spec文件(夹)简介

打包结束后,PyInstaller会在build文件夹中生成一些日志文件以及工作文件,而在dist文件夹中的是已经打包好的文件。spec文件中存储着打包时所用的命令以及要打包的相关文件,它的作用就是告诉PyInstaller如何来进行处理。

这里就简单讲下这三个文件(夹)的作用,笔者会在”PyInstaller打包进阶“中更深入讲解。

如果现在要给其他人使用:

  • 若用文件夹模式打包,读者需要把打包好的整个belle文件夹发过去,而你的朋友或者客户只需要点击文件夹中的belle.exe可执行文件即可运行程序。
  • 若用单文件模式打包,读者把dist文件夹下的belle.exe可执行文件发过去即可

build文件夹和spec文件跟程序运行没有关系,读者可以删掉。

《PyInstaller打包实战指南》第二节 PyInstaller的两种打包模式相关推荐

  1. 《PyInstaller打包实战指南》

    <PyInstaller打包实战指南> 好不容易解决了代码中的bug,又在PyInstaller打包问题上浪费了很多时间,最后可能还解决不了.其实,用PyInstaller来打包并不存在所 ...

  2. 《Nuitka打包实战指南》第六节 打包资源文件

    第六节 打包资源文件 目录 6.1 资源打包命令详解 6.2 资源打包实战练习 如果程序代码用到了一些资源文件 (如图片.音视频.json文件),我们就需要将这些资源文件一同打包,否则程序运行会报找不 ...

  3. 《Nuitka打包实战指南》第一节 下载和环境配置

    第一节 下载和环境配置 目录 1.1 下载Nuitka 1.2 下载并配置MinGW64和gcc 1.3 下载并配置ccache 1.4 下载并配置Dependency Walker 在本节,笔者会一 ...

  4. python两种打包方式--py2exe和pyinstaller

    http://blog.sina.com.cn/s/blog_a60b1c3c0102xqix.html 环境说明:python2.7.13 win10专业版64位 py2exe 1.安装 相对于py ...

  5. SpringBoot项目的两种打包方式分析

    点击上方关注 "终端研发部" 设为"星标",和你一起掌握更多数据库知识 作者: 枕边书 来源: zhenbianshu.github.io Part1前言 最近 ...

  6. ArcGIS MPK的两种打包方式

    最近发现用ArcGIS打包的MPK文件,如果数据的来源不一样:从shapefile源数据或者是从SDE源数据进行打包,能够引起打包文件的大小不一样已经在代码中引用文件的效率不一样的差异.开始发现这种差 ...

  7. ArcGIS MPK的两种打包方式_陈焜浩Arain_新浪博客

    最近发现用ArcGIS打包的MPK文件,如果数据的来源不一样:从shapefile源数据或者是从SDE源数据进行打包,能够引起打包文件的大小不一样已经在代码中引用文件的效率不一样的差异.开始发现这种差 ...

  8. 《PyInstaller打包实战指南》第十六节 单文件模式打包PyGame

    第十六节 单文件模式打包PyGame 打包示例源码下载: M to the B / Coffee Breakout · GitLab 版本信息: pygame==1.9.6 pyinstaller== ...

  9. 《PyInstaller打包实战指南》第九节 应用程序安全

    第九节 应用程序安全 1. 反编译打包好的程序 2. 如何加强反编译难度 打包好的可执行文件其实是可以被反编译出来的,也就是说程序源码会被暴露出来.如果源码比较重要的话,强烈建议加强程序安全性.在本节 ...

最新文章

  1. 2021年春季学期-信号与系统-第十三次作业参考答案-第六小题
  2. python文本分类特征选择_文本挖掘之特征选择(python 实现)
  3. 记录一下CMake编译opencv_cuda时的易错点
  4. JFreeChart(一)之架构
  5. Q-learning家族【强化学习】
  6. 华为云车联网解决方案
  7. 【WPF】右下角弹出自定义通知样式(Notification)——简单教程
  8. 嵌入式linux的驱动程序
  9. 通达信波段王指标公式主图_通达信精选指标——组合波段王果断买入井喷金叉突破均线流公式...
  10. 2012—2018年软考中级软件设计师历年真题
  11. 各种版本mysql驱动包下载地址
  12. qt中drawline函数的参数_c++ - Qt-drawPolyline和drawLine之间的区别 - 堆栈内存溢出
  13. 关键词挖掘的9种方法
  14. HTML5 中article,header和footer标签的使用
  15. 【精华】安卓开发学习路线规划
  16. WIN7内部版本7600.此WINDOWS副本不是正版---解决方法
  17. 电子厂计算机常用英语,电子厂常用英语
  18. 亚马逊运营listing优化A+页面
  19. [usaco6.1.1Postal Vans]
  20. 虚拟内存与虚拟存储器的区别

热门文章

  1. 最新易语言安卓逆向视频教程
  2. 如何用python选股票_用Python选一个自己的股票池1
  3. 天龙八部基于颜色的简易动作式外挂
  4. i513400f和i512400f差距 i5 13400f和i5 12400f区别对比
  5. VS2017使用NuGet安装Oracle.ManagedDataAccess.EntityFramework 的异常解决
  6. SEO百度快排-百度排名软件
  7. fedora23安装配置记录
  8. hyper-v 安装 XenServer 7.4
  9. 如何用JS局部刷新页面指定元素
  10. 百度搜索结果页面的参数 相关提示位置(rsp)