当前位置:   article > 正文

教你使用Pyinstaller将Python源码打包成可执行程序exe的方法_pyinstaller打包命令

pyinstaller打包命令

pyinstaller是一个常用的Python打包工具,可以将Python程序打包成独立的可执行文件,支持Windows、Linux和macOS等平台。


★★★Pyinstaller有许多参数,以下是其中一些主要参数的含义:

-F, --onefile:打包一个单个文件,如果您的代码都写在一个.py文件的话,可以使用这个参数,如果是多个.py文件,则不要使用此参数。

-D, --onedir:打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,代码易于维护。

-a, --ascii:不包含Unicode编码的支持(包括默认值:如果可用)。

-c, --console:使用控制台子系统执行,cmd会打开,只对Windows有效。

-w, --windowed,–noconsole:使用Windows子系统执行,当程序启动的时候,不会打开cmd命令行(只对Windows有效)。

-i , --icon=:指定程序图标

除了这些主要参数外,Pyinstaller还支持其他一些参数,例如-k, --tk(在部署时包含TCL/TK)和-d, --debug(产生debug版本的可执行文件)等。具体使用方法和参数含义可以参考Pyinstaller的官方文档或相关资料。

今天我们将上一个开发的诗词答题软件,的示例源码编译成exe程序的教程,打包程序一定要了解上面参数的意义,这是个基础。复制以下的Python源码,快来自己打包试试吧!!!


1.安装pyinstaller:

pip install pyinstaller
  • 1

2.使用pyinstaller打包程序:
在终端或者cmd里面,执行pyinstaller打包命令代码,将会讲几个例子。

**语法命令格式:**pyinstaller+空格+pyinstaller参数+空格+Python源码名称(不同的符号之间用空格隔开)

示例1:以下命令表示,打包一个诗词题库.py的Python源码,-w表示打包好的可执行程序启动的时候,不会打开cmd。敲完,复制完以下命令,按回车键即可,开始执行程序的打包。

pyinstaller -F -w 诗词题库.py
  • 1

示例2:将exe程序带logo图标打包,首先你要自己准备一个ico的图标,然后使用一下命令即可,鲸鱼.ico是程序图标的名字,与py源码在同一目录。

pyinstaller -F -w -i 鲸鱼.ico 诗词题库.py
  • 1

示例3:将exe程序带版本信息,作者,版本号,版权等等打包,如下图所示为打包好之后的效果。

A、你需要准备一个关于软件版本信息的.txt文件,名称可以自由命名,调用的时候,按照你命名的名字命令即可。

复制一下以下文本内容,命名:软件版本信息,保存为txt格式,**与Python源码,软件图标放在同一目录下。**把里面一些关于软件的版本默认信息,替换成你自己的即可。

# UTF-8
VSVersionInfo(
  ffi=FixedFileInfo(
#filevers和prodvers应该始终是包含四个项的元组:(1、2、3、4),将不需要的项设置为0
filevers=(1, 0, 0, 0),  # 文件版本******,鼠标悬浮exe会显示,也显示在 详细信息-文件版本,这个是检测版本的依据
prodvers=(4, 6, 9, 4), # 生产商,未见显示在哪里
mask=0x3f, # 两个位掩码
flags=0x0,
OS=0x4, # 为其设计此文件的操作系统,0x4-NT,无需更改它
fileType=0x1, # 文件的常规类型,0x1-该文件是一个应用程序
subtype=0x0, # 文件的功能,0x0表示该文件类型未定义
date=(0, 0) # 创建日期和时间戳
),
  kids=[
StringFileInfo(
  [
  StringTable(
    u'040904B0',
    [StringStruct(u'CompanyName', u'小红牛'), # 鼠标悬浮exe会显示
    StringStruct(u'FileDescription', u'诗词答题1.0'),    # 文件说明,鼠标悬浮exe会显示,也会显示在 详细信息-文件说明
    StringStruct(u'FileVersion', u'1.1.0'), # 没见哪里显示
    StringStruct(u'InternalName', u'我的Python教程'),
    StringStruct(u'LegalCopyright', u'#我的Python教程,官方微信公众号:wdPython'), #版权,会显示在 详细信息-版权
    StringStruct(u'OriginalFilename', u'诗词答题.exe'), #原始文件名,会显示在 详细信息-原始文件名
    StringStruct(u'ProductName', u'诗词答题1.0'),      #产品名称,会显示在 详细信息-产品名称
    StringStruct(u'ProductVersion', u'1.0.0.0')])    #产品版本,会显示在 详细信息-产品版本
  ]),
VarFileInfo([VarStruct(u'Translation', [2052, 1200])]) # 语言,中文简体
  ]
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

如果想把语言转成英文,可以把VarFileInfo([VarStruct(u’Translation’, [2052, 1200])])改成VarFileInfo([VarStruct(u’Translation’, [1033, 1200])])即可。

B、执行打包命名,如下图所示,–version-file=,后面代表着关于软件版本信息txt的文件的名称。

pyinstaller -F -w --version-file=软件版本信息.txt -i 鲸鱼.ico 诗词题库.py
  • 1

当看到下方successfully就代表打包成功和结束了

此时可以在dist文件夹中,找到自己打包好的exe程序

3.当使用PyInstaller打包EXE时出现错误,可能是由于以下原因:

  • 缺少依赖库:在打包过程中,PyInstaller会尝试将所有依赖库打包到可执行文件中。如果某些依赖库在打包时出现问题,可能会导致错误。解决方法是确保所有需要的依赖库都已安装,并可以使用pip install命令安装。

  • 文件路径问题:在程序中使用了相对路径或绝对路径,需要根据不同电脑的文件夹结构来修改路径。如果路径设置不正确,可能会导致打包错误。可以尝试用一下路径的写法去解决

import os
import sys

# 1.第1种路径的写法
if getattr(sys, 'frozen', False):
    application_path = os.path.dirname(sys.executable)
elif __file__:
    application_path = os.path.dirname(__file__)

print(application_path)

# 2.第2种路径的写法,第1种和第2种写法得到路径的结果是一样的
application_path =os.path.dirname(os.path.realpath(sys.argv[0]))
print(application_path)
#os.path.join(application_path,"文件名.txt")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 缺少某些动态链接库:在打包过程中,需要将这些动态链接库一并打包,并将其添加到系统环境变量中。如果某些动态链接库缺失或无法找到,可能会导致打包错误。

  • 打包参数错误:在使用PyInstaller打包时,可以指定不同的参数来控制打包过程。如果参数设置不正确,可能会导致打包错误。可以检查打包命令是否正确,并查看PyInstaller的文档以了解更多参数选项。

  • 版本不兼容:有些Python库可能不支持最新的Python版本。如果程序中使用了这些库,可以尝试将Python版本降低到较早的版本,以避免版本不兼容问题。

  • 其他可能的问题:你的项目所需要的第三方库确实多,递归深度也确实深。解决办法:打包不成功也会生成一个xxx.spec文件,打开xxx.spec文件,将下面两行代码放在第二行第三行

import sys

sys.setrecursionlimit(5000)
  • 1
  • 2
  • 3

当遇到打包错误时,可以查看打包过程中的错误信息,并逐步排除以上可能原因。可以尝试重新安装依赖库、检查文件路径、确认动态链接库是否齐全、检查打包参数等。

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述
若有侵权,请联系删除
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/537369
推荐阅读
相关标签
  

闽ICP备14008679号