使用PyInstaller的简单指南
这是一个简单的演练,可以使Pyinstaller启动并运行。
我决定尝试一下Pi,因为它声称默认情况下将其捆绑到其可执行文件中的内容更具选择性,并且如果您已安装了它,它还将UPX(终极包装器)集成到构建过程中。它还声称在Linux上的功能为奖励(我没有测试)。我强烈建议使用UPX选项,并将涵盖如何使其在Windows上工作。
在撰写本文时,最新的Pyinstaller版本为1.3,UPX为2.03。
这里的结果将是将一个简单的Python应用程序转换为可以在任何Windows XP机器上复制并运行的单个.exe文件。它可能在许多其他Windows平台(和Linux)上工作,但我尚未对其进行测试。
在继续之前,您将需要一个工作的Python安装。 Pyinstaller声称与版本1.5至2.4的兼容性。我正在运行2.5,而且工作正常。
您可以从SourceForge下载Pyinstaller
http://www.pyinstaller.org/
。
Pyinstaller不像大多数库那样在Python的站点包装目录下安装。相反,您可以将其目录的内容(当您解开下载文件时看到的内容)的内容,但请记住,您要么必须键入其位置或更改系统路径以使构建过程正常工作,因此尝试保持相对较短。我什至没有尝试过路径选项,因此,如果您尝试并起作用,请在此处放置便条。我的安装位置是
C:\ python25 \ pyinstaller13
,这意味着我将所有这些文件从存档文件夹中获取,然后将它们复制到安装文件夹。记下这条路,因为如果它不同,您必须替换。
需要配置Pyinstaller。由于它与所有这些Python版本兼容,因此需要知道它正在使用哪个版本。不过,这很简单 - 打开您刚刚复制这些文件的目录,然后双击
configure.py
。 PI将扫描您的Python安装DIR,并制作一个为您的安装定制的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
)。 Pyinstaller使用了构建目录和.spec文件,并且可以删除。 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上获得更多信息,其中包括一些不太长的文档页面。
干杯,
- 标记
评论已关闭