首页 > 编程语言 >将Python文件编译为exe可执行程序

将Python文件编译为exe可执行程序

时间:2024-09-27 15:12:01浏览次数:8  
标签:文件 exe Python py -- 玫瑰 可执行程序

    Python程序py格式文件的优点是可以跨平台,但运行必须有Python环境,没有Python环境无法运行py格式文件。有没有方法,用户不同安装Python就可直接运行开发的项目工程?答案是肯定的。这就涉及到需要将Python的.py格式文件编写的脚本编译成一个系统可执行文件,这可用PyInstaller来实现。

    PyInstaller支持在在Windows/Linux/Mac环境下将Python脚本打包成可执行程序,在没有Python环境的机器上运行。注意:需要在哪个操作系统平台一运行,需在相应的操作系统(或虚拟机)下编译。

1. 安装PyInstaller

    由于pyinstaller是第三方库,因此需要自行安装PyInstaller模块。官方网站:http://www.pyinstaller.rg或者国内镜像Links for pyinstaller、清华、阿里、豆瓣等。

    安装PyInstaller模块与安装其他Python模块一样,使用pip命令安装即可。

直接安装

pip install pyinstaller
 

用镜像安装(如豆瓣)

pip install pyinstaller -i https://pypi.douban.com/simple
 

    强烈建议使用“pip在线安装方式”安装PyInstaller模块,不要使用“离线包方式”安装,因为PyInstaller模块还依赖其他模块,pip在安装PyInstaller模块时会先安装它的依赖模块。

    安装结束,应该能看到如下输出结果:

Successfully installed pyinstaller-x.x.x
 

    其中的x.x.x代表PyInstaller的版本。

二、用PyInstaller生成可执行程序

    PyInstaller工具的命令语法如下:

pyinstaller <选项> <Python源文件>
 

    不管这个 Python 应用是单文件的应用,还是多文件的应用,只要在使用 pyinstaller 命令时编译作为程序入口的 Python 程序即可。

    PyInstaller工具是跨平台的,它既可以在 Windows平台上使用,也可以在 Mac OS X 平台上运行。在不同的平台上使用 PyInstaller 工具的方法是一样的,它们支持的选项也是一样的。

    先创建一个文件夹(目录),在该目录下创建一个.py文件(或复制一个.py文件)。

    然后转命令行窗口(cmb),进入到创建的文件夹(目录)下,执行如下命令:

pyinstaller -F xxx.py
 

    执行上面命令,将看到详细的生成过程。当生成完成后,将会在当前目录下生成一个dist目录,并在该目录下看到有一个xxx.exe文件,这就是使用PyInstaller工具生成的exe程序。

    在上面命令中使用了-F选项,该选项指定生成单独的exe文件,因此,在dist目录下生成了一个单独的xxx.exe文件(在Mac OS X平台上生成的文件没有后缀);与-F选项对应的是-D选项(默认选项),该选项指定生成一个目录(包含多个文件)来作为程序。

    PyInstaller常用选项如表1所示。

表1 PyInstaller支持的常用选项

选项

说明

-h,--help

查看该模块的帮助信息

-F,-onefile

产生单个的可执行文件

-D,--onedir

产生一个目录(包含多个文件)作为可执行程序

-a,--ascii

不包含Unicode字符集支持。不包含编码,在支持unicode的Python版本上默认包含所有的编码

-d,--debug

产生debug版本的可执行文件

-w,--windowed,--noconsolc

指定程序运行时不显示命令行窗口(仅对Windows有效)

-c,--nowindowed,--console

指定使用命令行窗口运行程序(仅对Windows有效),默认

-i,--icon=<file.ioc>

将file.ico添加为可执行文件的资源,改变程序的图标(只对Windows系统有效)

-o DIR,--out=DIR

指定spec文件的生成目录。如果没有指定,则默认使用当前目录来生成spec文件

-p DIR,--path=DIR

设置Python导入模块的路径(和设置PYTHONPATH环境变量的作用相似)。也可使用路径分隔符(Windows使用分号,Linux 使用冒号)来分隔多个路径

-n NAME,--name=NAME

指定项目(产生的spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为spec的名字

-icon=<file.exe,n>

将file.exe的第n个图标添加为可执行文件的资源(只对Windows系统有效)

-v file,--version=file

将verfile作为可执行文件的版本资源(只对Windows系统有效)

-s,--strip

可执行文件和共享库将run through strip。注意Cygwin的strip往往使普通的win32 Dll无法使用

-X,--upx

如果有UPX安装(执行Configure.py时检测),会压缩执行文件(Windows系统中的DLL也会)(参见note)

    在表1中列出的只是PyInstaller模块所支持的常用选项,如果需要了解PyInstaller选项的详细信息,则可通过pyinstaller -h来查看。

三、设置打包后的版本信息

    编辑“版本信息文件”,此文件为纯文本文件,可用.txt扩展名,文件名可随意,如“file_version_info.txt”。典型的版本信息文件内容如下,中文注释是作者为方便读者学习而加的,注意红框中的项目。

 

说明:

    1.有关固定文件信息“ffi”的更多详细信息,请参阅:# http://msdn.microsoft.com/en-us/library/ms646997.aspx

    2. Translation中的语言代码,Locale ID信息见表2。

四、编译.py文件为.exe可执行文件

1、无版本配置文件

    下面以“漂亮玫瑰.py”为例,代码见:Python绘图——漂亮的玫瑰(源代码)

    创建一个文件夹(目录),将“漂亮玫瑰.py”复制到该文件夹,win+R,输入cmd进入命令行窗口,通过cd命令进入刚才创建的文件夹(目录),在该目录下执行如下命令:

pyinstaller -F 漂亮玫瑰.py
 

    上面命令中的“-F”选项指定生成单个的可执行程序。运行上面命令,在当前目录下生成了一个build、dist二个子目录,并在dist子目录下生成了一个“漂亮玫瑰.exe”文件。

    直接双击运行“漂亮玫瑰.exe”程序就会绘制“漂亮玫瑰”,读者可自行查看运行结果。

    在“漂亮玫瑰.exe”上单击右键,选“属性”,选“详细信息”页,信息显示如图1所示。

图1 直接编译后有exe文件无版本信息

2、有版本配置文件

    编辑“版本信息文件”,文件名随意,但需是文件文件,如“myVerInfo.txt”,内容如下:

  1.   VSVersionInfo(
  2.   ffi=FixedFileInfo(
  3.   filevers=(1, 0, 0, 23),
  4.   prodvers=(1, 0, 0, 1),
  5.   mask=0x3f,
  6.   flags=0x0,
  7.   OS=0x4,
  8.   fileType=0x1,
  9.   subtype=0x0,
  10.   date=(0, 0)
  11.   ),
  12.   kids=[
  13.   StringFileInfo(
  14.   [
  15.   StringTable(
  16.   '080403a8',
  17.   [StringStruct('CompanyName', '张瑞林'),
  18.   StringStruct('FileDescription', '绘制漂亮玫瑰'),
  19.   StringStruct('FileVersion', '1.001'),
  20.   StringStruct('InternalName', '漂亮玫瑰.exe'),
  21.   StringStruct('LegalCopyright', '张瑞林版权所有'),
  22.   StringStruct('OriginalFilename', '漂亮玫瑰.py'),
  23.   StringStruct('ProductName', 'Python图形绘制系列—玫瑰花'),
  24.   StringStruct('ProductVersion', '1.005')])
  25.   ]),
  26.   VarFileInfo([VarStruct('Translation', [2052, 936])])
  27.   ]
  28.   )

    在该目录下执行如下命令:

pyinstaller -F --version-file=myVerInfo.txt 漂亮玫瑰.py
 

    执行过程如图2。

图2 执行pyinstaller -F --version-file=myVerInfo.txt 漂亮玫瑰.py

    此时会多一个“漂亮玫瑰.spec”文件,见图3。

 图3 执行pyinstaller -F --version-file=myVerInfo.txt 漂亮玫瑰.py后的文件夹

    “漂亮玫瑰.spec”中有一行“version='myVerInfo.txt'”,“漂亮玫瑰.spec”完整内容如下所示,注意红框内容。

     如果修改了.py文件“漂亮玫瑰.py”,再次编译只需用“pyinstaller -F 漂亮玫瑰.py”,如修改了版本信息文件“myVerInfo.txt”,则要删除.spec文件和build、dist二个子目录,重新用“pyinstaller -F --version-file=myVerInfo.txt 漂亮玫瑰.py”进行编译,否则可能得不到正确的版本信息。

    进入dist子目录,在“漂亮玫瑰.exe”上单击右键,选“属性”,选“详细信息”页,信息显示如图4所示。

图4 用版本信息文件编译后有exe文件的属性“详细信息”

    编译后exe文件显示的版本信息与“版本信息文件”对照,如图5所示。

图5 编译后有exe文件“详细信息”与“版本信息文件”对照

 

2024-09-27 15:12:19【出处】:https://blog.csdn.net/hz_zhangrl/article/details/130589516

=======================================================================================

给Python编译的exe文件加个图标

    上篇“将Python文件编译为exe可执行程序”一文,介绍了用PyInstaller将Python文件编译为exe可执行文件,但生成的是PyInstaller默认的图标,如图1所示。

 图1 直接编译的默认图标

    本篇介绍“给Python编译的exe文件加个图标”。

一、给exe文件添加ico图标

     先用icon工具软件(如:Axialis IconWorkshop)制作一个与软件相对应的ico图标,本例是玫瑰ico(见图2,黑色为透明)。

图2 ico文件

    编译时需加选项 -i icon.ico或--icon=icon.ioc,将默认图标替换为用户自己的图标。

    建文件夹d:\rose,将要编译的.py文件、ico图标文件和版本信息文件复制到此文件夹。仍以上篇为例,将Python文件“漂亮玫瑰.py”、版本信息文件“myVerInfo.txt”和图标文件“rose.ico”复制到d:\rose,如图3所示。

 图3 编译前文件夹中文件

    在命令行窗口转rose文件夹,在rose文件夹下执行如下命令:

pyinstaller -F --version-file=myVerInfo.txt -i rose.ico 漂亮玫瑰.py
 

    执行过程如图4(截图时未执行结束)。

图4 执行pyinstaller -F --version-file=myVerInfo.txt -i rose.ico 漂亮玫瑰.py过程

    此时会产生build、dist二个子文件夹,并多一个“漂亮玫瑰.spec”文件,见图5。

图5 执行带版本信息的pyinstaller编译后的文件夹

    “漂亮玫瑰.spec”与“myVerInfo.txt'”文件上篇已介绍过,本篇不再重复。

    进入dist子文件夹,可以发现“漂亮玫瑰.exe”的图标为作者设计的rose.ico图标(见图6),在“漂亮玫瑰.exe”上单击右键,选“属性”,选“详细信息”页,信息显示如图6所示。

 图6 用版本信息文件编译后有exe文件的属性“详细信息”

 

2024-09-27 15:12:52【出处】:https://blog.csdn.net/hz_zhangrl/article/details/130600340

=======================================================================================

标签:文件,exe,Python,py,--,玫瑰,可执行程序
From: https://www.cnblogs.com/mq0036/p/18435786

相关文章

  • Python自动整理文件夹
    编写一个Python脚本来遍历指定目录下的所有文件,根据文件的扩展名来创建相应的子文件夹(如果尚不存在的话),然后将文件移动到对应的子文件夹中。同时,我们需要处理重名文件的问题,通过在文件名后添加_和数字来区分。下面是一个实现这个功能的Python脚本示例:importosimportshu......
  • 数据结构编程实践20讲(Python版)—02链表
    本文目录02链表linked-listS1说明S2示例单向链表双向链表循环链表S3问题:反转单向链表求解思路Python3程序S4问题:双向链表实现历史浏览网页求解思路Python3程序S5问题:基于循环链表的玩家出牌顺序求解思路Python3程序往期链接01数组02链表linked-lis......
  • 自动化办公-python中的open()函数
    Python中的open()函数用于打开一个文件,并返回一个文件对象,您可以通过该对象对文件进行读写操作。基本语法:open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)参数说明:file:要打开的文件路径(字符串)。可以是......
  • 自动化办公-Python-os模块的使用
    os.path模块的使用在指定文件路径时,由于操作系统的差异,直接使用硬编码的路径可能会导致程序在不同平台上无法正常运行。为了解决这个问题,Python提供了os.path模块,它包含了一系列用于路径操作的函数,可以帮助您以跨平台的方式处理文件路径。为什么要使用os.path模块......
  • Python 迭代器双指针
    我们知道在cpp这种指针语言里面,双指针是这么写的:for(autoi=v.begin(),j=v.begin();j<v,end();j++){//dosomething...//updatepointeriwhile(cond){i++;}}对于py这样不带指针的,一般就只能这么写:i=0forjinrange(len(lst)):#do_something......
  • python爬虫案例——抓取三级跳转网页,实现逐页抓取,数据存入mysql数据库(10)
    文章目录1、目标任务2、网页分析3、完整代码1、目标任务目标站点:情话网(http://www.ainicr.cn/tab/)任务:抓取该网站下所有标签下的所有情话语句,并将其存入mysql数据库2、网页分析用浏览器打开网页,按F12或右键检查,进入开发者模式,在Network-Doc下找到网页的数......
  • PYTHON钢琴简谱播放器代码QZQ
    importtkinterastkimportpygame.midiimporttimeimportthreadingimportrandom初始化pygame.midipygame.midi.init()获取MIDI输出设备midi_out=pygame.midi.Output(0)乐器名称映射instrument_names={0:“大钢琴(声学钢琴)”,1:“明亮的钢琴”,2:......
  • 关闭PerfWatson2.exe 体验改善计划
    关闭PerfWatson2.exe体验改善计划 VS2022:帮助——隐私声明——隐私设置 VS2022之前版本:帮助——隐私声明——隐私设置上开机,打开visualstudio,发现电脑慢得象蜗牛,还卡卡滴。任务管理器里一看,有一个不知道什么的PerfWatson2.exe在狂跑就下图中的这家伙度娘了一下,原......
  • python教程修订版
    9/23Inthiscourse,I'mgoingtoteachyoueverythingyouneedtoknowtogetstartedprogramminginPython.Now,Pythonisoneofthemostpopularprogramminglanguagesoutthere在众多的……中.Andit'sbyfar目前为止oneofthemostsõughtafter受欢迎......
  • 数据探索Python数据分析入门指南
    在数据驱动的商业环境中,数据分析已成为一项至关重要的技能。Python,以其简洁的语法和强大的数据处理库,成为了数据分析领域的首选语言。本文将为您提供一份Python数据分析的入门指南,帮助您开启数据探索之旅。为什么选择Python进行数据分析?易于学习:Python语法简洁,易于上手,适合初学者。......