这是启动和运行PyInstaller的简单演练。
我决定尝试一下PI,因为它声称在默认情况下对捆绑到可执行文件中的内容更具选择性,并且还将UPX(适用于eXecutables的Ultimate Packer)集成到了构建过程中(如果已安装)。 它还声称在Linux上具有功能,这是一个奖励(我没有测试过)。 我强烈推荐UPX选项,并将介绍如何在Windows上运行它。
在撰写本文时,PyInstaller的最新稳定版本是1.3,而UPX是2.03。
这里的结果是将一个简单的python应用程序转换为单个.exe文件,该文件可以复制并在任何Windows XP计算机上运行。 它可能在许多其他Windows平台(和Linux)上运行,但我尚未对其进行测试。
您需要先进行有效的Python安装,然后再继续。 PyInstaller声称与1.5至2.4版本兼容。 我正在运行2.5,并且工作正常。
您可以从SourceForge下载PyInstaller,网址为:
http://www.pyinstaller.org/ 。PyInstaller不会像大多数库一样安装在Python的site-packages目录下。 取而代之的是,您可以将其目录的内容(将下载文件解压缩时所见的内容)放在任意位置,但是请记住,您必须键入其位置或更改系统路径才能使构建过程正常运行,因此尝试使其相对较短。 我什至没有尝试过path选项,因此,如果您尝试使用它并且可以工作,请在此处添加注释。 我的安装位置是
c:\ python25 \ pyinstaller13 ,这意味着我从存档文件夹中取出了所有这些文件,然后将它们简单地复制到了安装文件夹中。 记下此路径,因为如果不同,则必须替换。需要配置PyInstaller。 由于它与所有这些Python版本兼容,因此需要知道它正在使用哪个版本。 不过很简单-打开您刚刚复制这些文件的目录,然后双击
configure.py 。 PI将扫描您的Python安装目录,并创建一个config.dat文件,以针对您的安装对其进行自定义。接下来,继续从上下载UPX
http://upx.sourceforge.net/#download 。 (我正在使用Win32控制台程序包)。 出于PyInstaller的目的,您只需要在系统路径中放置一个文件upx.exe即可 。 解压缩存档后,将upx.exe复制到c:\ pythonXX目录。 这里的所有都是它的。我从之前的演练中使用的基本Hello World应用程序开始:
#!/usr/bin/env python
for i in xrange(10000):
print "Hello, World!"
使用您喜欢的编辑器创建此文件,然后将其另存为HelloWorld.py 。
接下来,创建一个批处理文件以运行构建过程。
还记得您复制PyInstall的路径吗?
在下面的第一行中,您需要这里。
返回编辑器输入以下内容:
set PIP=c:\python25\pyInstaller13\
python %PIP%Makespec.py --onefile --console --upx --tk HelloWorld.py
python %PIP%Build.py HelloWorld.spec
您可以使用所需的任何命名约定,但是由于每个项目的命名约定可能有所不同,因此我将其保存为HelloWorld.bat ,就在我的HelloWorld.py文件旁边。
有关这些命令行选项的基础知识,请参见最后的注释。
您现在应该有两个文件,
HelloWorld.py和HelloWorld.bat都在同一目录中。双击
HelloWorld.bat,然后坐下。 根据您的硬件,可能要花几秒钟到一分钟才能完成。 它似乎比我最近描述的可比的py2exe构建要花更长的时间,并且UPX压缩通常看起来会花费最多的时间,但是这个示例应该很快。cmd窗口结束后,检查存储两个文件的目录。 您现在应该看到一个新目录(
buildHelloWorld )和一些新文件( HelloWorld.spec , warnHelloWorld.txt和HelloWorld.exe )。 构建目录和.spec文件由PyInstaller使用,可以删除。 warnXXX.txt文件包含警告; 看来这些总是在这里,但到目前为止它们根本不影响程序。 .exe文件准备就绪。如果您看到了py2exe演练,您可能还记得,我的110字节源文件中的HelloWorld.exe最高为3.2MB。 该文件的大小为1.5MB,这是一个很大的改进。 在较大的项目中,将外部.dll和其他资源捆绑到您的项目中,两者之间的差异应该更大。
继续,双击
HelloWorld.exe ,我知道您想...复制
将HelloWorld.exe转移到另一台计算机上(没有Python),然后在该计算机上运行它,以查看它是否确实有效。一些注意事项:
就像py2exe一样,PyInstaller在其输出文件中捆绑了python解释器,所有必需的DLL和所有引用的库,将100字节转换为1.5MB。 但是,这比py2exe的3.2MB小得多。
创建时
上面的HelloWorld.bat ,您要根据要“编译”的每个程序做出几个简单的选择。 快速摘要如下:
--tk This is required for inclusion of the tcl/Tk
libraries. Unlike py2exe, PyInstaller doesn't
recognized that this is used and include it
automatically. However, you can leave it in
without doing any harm (as we did in this
example). It adds some overhead, but the size
seems to vary.
--upx I mentioned that this is a great option, and
it is, but it's really slow, especially as your
source file gets bigger. It's a great option
for your final compile before distributing, but
you might save a lot of time if you turn it off
until then.
--console This is the DOS-like box, and carries the same
--noconsole significance as the python vs. pythonw usage
for your other programs. If your program runs
in Windows and you've finished troubleshooting,
you probably want --noconsole.
有关更多信息,请访问www.pyinstaller.org,其中包括一些篇幅不太长的文档页面。
干杯,
-马克
From: https://bytes.com/topic/python/insights/579554-simple-guide-using-pyinstaller