Python程序打包成exe可执行文件的方法探究

2017-07-18 17:36王瑞文王圣辉边润根邓明月
无线互联科技 2017年12期

王瑞文+王圣辉+边润根+邓明月

摘 要:Python是一种很流行的开源编程语言,可以在各种领域中用来编写独立的程序和脚本。Python免费、可移植、功能强大,而且使用起来相当容易。来自软件产业各个角落的程序员都已经发现,Python对于开发者效率和软件质量都十分关注,这无论在大项目还是小项目中都是一个战略性的优点。但是Python也有一点点小缺陷,那就是Python程序的执行必须要有解释器的参与。Python的程序如何在没有解释器的平台上使用,很简单,将Python程序打包成exe可执行文件即可。文章对Python程序打包成exe可执行文件的方法进行探究,以期为Python程序的深入应用提供一定支持。

关键词:Python程序;exe可执行文件;解释器

Python最大的优点是简单易学,其语法不像其他编程语言那样复杂。阅读一个良好的Python程序就感觉像是在读英语一样,它使你能够专注于解决问题而不是去搞明白语言本身。

Python也被称为是一门清晰的语言。因为它的作者在设计它的时候,总的指导思想是:对于一个特定的问题,只要有一种最好的方法来解决就好了。Python具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用。在实际开发中,Python常被昵称为胶水语言,这不是说它会把你的手指粘住,而是说它能够很轻松地把用其他语言制作的各种模块联结在一起。Python的优点还包括可扩充性免费、开源、高级语言、可移植性、解释性、可扩展性、可嵌入性等。

1 利用Windows平台工具打包

1.1 Py2exe打包

Py2exe是把Python脚本转换为Windows平台上面可以运行的可执行程序的工具。Py2exe的使用方法十分简单,需要进行3个步骤:(1)根据你本地安装的Python的版本来选择要安装的Py2exe版本;(2)为py文件编写setup文件。(3)执行setup文件进行编译。

举个简单的例子:如果你有一个名字为Py2exe.py的脚本程序需要打包,使它能够运行在Windows平台上,那么首先你需要写一个设置脚本如setup.py。setup.py示例如下:

#setup.py

from distutils.core import setup

import py2.exe

setup(console=[“py2exe.py”])

然后在cmd中按下面的方法运行mysetup.py:

python mysetup.py py2exe

上面的命令执行后将产生一个名为dist的子目录,其中包含了py2exe.exe,library.zip这些文件,dist子目录中的文件包含了程序所必需的东西。

可能出现的问题:(1)error MSVCP90.dll:No such file or directory,解决方法:将该dll写入dll_excludes中;(2)error.bundle-files 1 not yet supported on win64,对于64位的Py2exe而言,bundle_files选项目前仍不可用,无法生成单文件。

1.2 cx_freeze打包

与Py2exe相同,cx_freeze打包也需要下载并安装与Python版本相同的程序。生成可执行程序有两种方式:(1)通过cxfreeze-quickstart生成setup.py文件,定制setup.py文件;(2)执行cxfreeze main.py默认生成dist目录。可以添加选项,可以通过cxfreeze-h查看帮助文档。

一般情况下,这两种都可以正确生成可执行程序。特殊情况下,第一种可能会出现错误,第二种不会出现错误。第一种需要自己定制setup.py文件,需要手动添加第三方模块,如果不添加,会出现错误。

cx_freeze可以生成exe文件加运行时所依赖的其他多个文件和单独的msi安装文件包。和Pyinstaller相比,缺点有:需要手动自己输入所依赖的库的名字,无法自动识别;还需要添加对应的path,供其搜索依赖的库。

2 第三方库Pyinstaller打包

2.1 第三方库的安装

Pyinstaller需要在命令行(控制台)下用工具安装,如图1所示。

pip install pyinstaller

如果没有设置环境变量,可以在Python的安装目录下的scripts文件夹下找到pip.exe,在命令行下运行它就可以了。

2.2 打包Python程序的命令

Pyinstaller库会自动将Pyinstaller命令安装到Python解释器目录中,与pip或pip3命令相同,因此可以直接使用。使用Pyinstaller库十分简单,请注意,Pyinstaller不支持源文件名中有英文句号存在。打包命令如下:

Pyinstaller –F e:\pythonexe\GUI.py –noconsole

参数说明:-F 表示生成单个可执行文件;

-w表示去掉控制台窗口,这在GUI界面时非常有用;

-p表示你自己自定义需要加载的类路径,一般情况下用不到;

-i表示可执行文件的图标;

-noconsole表示去掉控制台窗口,如果还想添加自定义的依赖库,就要加上-p参数。

2.3 获得打包后的exe程序

執行完毕后,源文件所在目录将生成dist和build两个文件夹。其中build是Pyinstaller存储临时文件的目录,可以安全删除。最终的打包程序在dist文件夹中,目录中其他文件是可执行文件的动态链接库。

3 結语

本文列出了3种较为快捷的Python打包方法,使得每次运行脚本不再需要打开IDE。其中使用第三方库Pyinstaller打包方法较为简单方便,且不易出现问题。Py2exe打包的程序只能在相同的系统下运行,在XP系统用Py2exe打包的exe只能在XP上运行,在Win 7上肯定会出问题,而Pyinstaller打包则不会出现这种问题。

作者简介:王瑞文(1997— ),男,江西吉安,本科;研究方向:航空宇航制造。

[参考文献]

[1]赫特兰.Python基础教程[M].凌杰,陆禹淳,顾俊,译.北京:人民邮电出版社,2010.

[2]陈仲才.Python核心编程[M].杨涛,译.北京:机械工业出版社,2001.

[3]鲁特兹.Python学习手册[M].侯靖,译.3版.北京:机械工业出版社,2009.

Abstract: Python is a popular open source programming language that can be used in a variety of fields to write separate programs and scripts. Python is free, portable, powerful and easy to use. Programmers from every corner of the software industry have found that Python is very concerned about developers efficiency and software quality, which is a strategic advantage both in large and small projects. However, Python also has a small flaw, that is, Python program execution must have the participation of the interpreter. How does a Python program work on an interpreter free platform? Its easy to package Python programs into exe executable files. This paper explores the methods that Python programs package into exe executable to provide some support for the indepth application of Python programs.

Key words: Python programs; exe executable files; interpreter