<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Townes &#187; py2exe_email</title>
	<atom:link href="https://thetownes.coolpage.biz/?feed=rss2&#038;tag=py2exe_email" rel="self" type="application/rss+xml" />
	<link>https://thetownes.coolpage.biz</link>
	<description>本站已转移至：http://www.thetownes.info</description>
	<lastBuildDate>Thu, 01 Aug 2013 11:49:56 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.2</generator>
		<item>
		<title>py2exe email..</title>
		<link>https://thetownes.coolpage.biz/?p=131</link>
		<comments>https://thetownes.coolpage.biz/?p=131#comments</comments>
		<pubDate>Tue, 09 Jul 2013 14:56:50 +0000</pubDate>
		<dc:creator>Will</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[py2exe_email]]></category>

		<guid isPermaLink="false">http://thetownes.coolpage.biz/?p=131</guid>
		<description><![CDATA[一、简介 &#160; py2exe是一个将python脚本转换成windows &#8230; <a href="https://thetownes.coolpage.biz/?p=131">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><strong>一、简介</strong></p>
<p>&nbsp;</p>
<p>py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具，这样，你就可以不用装python而在windows系统上运行这个可执行程序。</p>
<p>&nbsp;</p>
<p>py2exe已经被用于创建wxPython,Tkinter,Pmw,PyGTK,pygame,win32com client和server,和其它的独立程序。py2exe是发布在开源许可证下的。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>二、安装py2exe</strong></p>
<p>&nbsp;</p>
<p>从<a href="http://prdownloads.sourceforge.net/py2exe">http://prdownloads.sourceforge.net/py2exe</a>&nbsp;下载并运行与你所安装的Python对应的py2exe版本的installer，这将安装py2exe和相应的例子；这些例子被安装在libsite-packagespy2exesamples目录下。</p>
<p>&nbsp;</p>
<p><strong>三、py2exe的用法</strong></p>
<p>&nbsp;</p>
<p>如果你有一个名为helloworld.py的python脚本，你想把它转换为运行在windows上的可执行程 序，并运行在没有安装python的 windows系统上，那么首先你应写一个用于发布程序的设置脚本例如mysetup.py，在其中的setup函数前插入语句 import py2exe 。<br />
mysetup.py示例如下:</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div id="">
<div>
<div>Python代码</div>
</div>
<ol start="1">
<li>from&nbsp;distutils.core&nbsp;import&nbsp;setup</li>
<li>import&nbsp;py2exe</li>
<li>setup(console=["helloworld.py"])</li>
</ol>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>如果显示错误提示的话 “ msvcp90.dll: no such file or directory”</strong></p>
<p>&nbsp;</p>
<p>请尝试下面的方法：</p>
<p>&nbsp;</p>
<div id="">
<div>
<div>Python代码</div>
</div>
<ol start="1">
<li>from&nbsp;distutils.core&nbsp;import&nbsp;setup</li>
<li>import&nbsp;py2exe</li>
<li>setup(</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;console=["helloworld.py"],</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;options&nbsp;=&nbsp;{&nbsp;”py2exe”:&nbsp;{&nbsp;”dll_excludes”:&nbsp;["MSVCP90.dll"]&nbsp;}&nbsp;}</li>
<li>)</li>
</ol>
</div>
<p>&nbsp;</p>
<p>然后按下面的方法运行mysetup.py: （dos:&nbsp; cmd =&gt; cd desktop =&gt; mysetup.py py2exe）<br />
python mysetup.py py2exe<br />
上面的命令执行后将产生一个名为dist的子目录，其中包含了helloworld.exe,python24.dll,library.zip这些文件。<br />
如果你的helloworld.py脚本中用了已编译的C扩展模块，那么这些模块也会被拷贝在个子目录中，同样，所有的dll文件在运行时都是需要的，除了系统的dll文件。<br />
dist子目录中的文件包含了你的程序所必须的东西，你应将这个子目录中的所有内容一起发布。</p>
<p>默认情况下，py2exe在目录dist下创建以下这些必须的文件：<br />
1、一个或多个exe文件。<br />
2、python##.dll。<br />
3、几个.pyd文件，它们是已编译的扩展名，它们是exe文件所需要的；加上其它的.dll文件，这些.dll是.pyd所需要的。<br />
4、一个library.zip文件，它包含了已编译的纯的python模块如.pyc或.pyo<br />
上面的mysetup.py创建了一个控制台的helloword.exe程序，如果你要创建一个图形用户界的程序，那么你只需要将mysetup.py中的console=["helloworld.py"]替换为windows=["myscript.py"]既可。</p>
<p>&nbsp;</p>
<p>py2exe一次能够创建多个exe文件，你需要将这些脚本文件的列表传递给console或windows的关键字参数。如果你有几个相关联的脚本，那么这是很有用的。<br />
运行下面个命令，将显示py2exe命令的所有命令行标记。<br />
python mysetup.py py2exe –help</p>
<p>&nbsp;</p>
<div id="">
<div>
<div>Python代码</div>
</div>
<ol start="1">
<li>Global&nbsp;options:</li>
<li>&nbsp;&nbsp;–verbose&nbsp;(-v)&nbsp;&nbsp;run&nbsp;verbosely&nbsp;(default)</li>
<li>&nbsp;&nbsp;–quiet&nbsp;(-q)&nbsp;&nbsp;&nbsp;&nbsp;run&nbsp;quietly&nbsp;(turns&nbsp;verbosity&nbsp;off)</li>
<li>&nbsp;&nbsp;–dry-run&nbsp;(-n)&nbsp;&nbsp;don’t&nbsp;actually&nbsp;do&nbsp;anything</li>
<li>&nbsp;&nbsp;–help&nbsp;(-h)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show&nbsp;detailed&nbsp;help&nbsp;message</li>
<li>Options&nbsp;for&nbsp;’py2exe’&nbsp;command:</li>
<li>&nbsp;&nbsp;–optimize&nbsp;(-O)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optimization&nbsp;level:&nbsp;-O1&nbsp;for&nbsp;”python&nbsp;-O”,&nbsp;-O2&nbsp;for</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”python&nbsp;-OO”,&nbsp;and&nbsp;-O0&nbsp;to&nbsp;disable&nbsp;[default:&nbsp;-O0]</li>
<li>&nbsp;&nbsp;–dist-dir&nbsp;(-d)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;directory&nbsp;to&nbsp;put&nbsp;final&nbsp;built&nbsp;distributions&nbsp;in&nbsp;(default</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;dist)</li>
<li>&nbsp;&nbsp;–excludes&nbsp;(-e)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comma-separated&nbsp;list&nbsp;of&nbsp;modules&nbsp;to&nbsp;exclude</li>
<li>&nbsp;&nbsp;–dll-excludes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comma-separated&nbsp;list&nbsp;of&nbsp;DLLs&nbsp;to&nbsp;exclude</li>
<li>&nbsp;&nbsp;–ignores&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comma-separated&nbsp;list&nbsp;of&nbsp;modules&nbsp;to&nbsp;ignore&nbsp;if&nbsp;they&nbsp;are</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;not&nbsp;found</li>
<li>&nbsp;&nbsp;–includes&nbsp;(-i)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comma-separated&nbsp;list&nbsp;of&nbsp;modules&nbsp;to&nbsp;include</li>
<li>&nbsp;&nbsp;–packages&nbsp;(-p)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comma-separated&nbsp;list&nbsp;of&nbsp;packages&nbsp;to&nbsp;include</li>
<li>&nbsp;&nbsp;–compressed&nbsp;(-c)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;create&nbsp;a&nbsp;compressed&nbsp;zipfile</li>
<li>&nbsp;&nbsp;–xref&nbsp;(-x)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;create&nbsp;and&nbsp;show&nbsp;a&nbsp;module&nbsp;cross&nbsp;reference</li>
<li>&nbsp;&nbsp;–bundle-files&nbsp;(-b)&nbsp;&nbsp;&nbsp;bundle&nbsp;dlls&nbsp;in&nbsp;the&nbsp;zipfile&nbsp;or&nbsp;the&nbsp;exe.&nbsp;Valid&nbsp;levels</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;are&nbsp;1,&nbsp;2,&nbsp;or&nbsp;3&nbsp;(default)</li>
<li>&nbsp;&nbsp;–skip-archive&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do&nbsp;not&nbsp;place&nbsp;Python&nbsp;bytecode&nbsp;files&nbsp;in&nbsp;an&nbsp;archive,&nbsp;put</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;them&nbsp;directly&nbsp;in&nbsp;the&nbsp;file&nbsp;system</li>
<li>&nbsp;&nbsp;–ascii&nbsp;(-a)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do&nbsp;not&nbsp;automatically&nbsp;include&nbsp;encodings&nbsp;and&nbsp;codecs</li>
<li>&nbsp;&nbsp;–custom-boot-script&nbsp;&nbsp;Python&nbsp;file&nbsp;that&nbsp;will&nbsp;be&nbsp;run&nbsp;when&nbsp;setting&nbsp;up&nbsp;the</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;runtime&nbsp;environment</li>
<li>usage:&nbsp;setup_py2exe.py&nbsp;[global_opts]&nbsp;cmd1&nbsp;[cmd1_opts]&nbsp;[cmd2&nbsp;[cmd2_opts]&nbsp;…]</li>
<li>&nbsp;&nbsp;&nbsp;or:&nbsp;setup_py2exe.py&nbsp;–help&nbsp;[cmd1&nbsp;cmd2&nbsp;...]</li>
<li>&nbsp;&nbsp;&nbsp;or:&nbsp;setup_py2exe.py&nbsp;–help-commands</li>
<li>&nbsp;&nbsp;&nbsp;or:&nbsp;setup_py2exe.py&nbsp;cmd&nbsp;–help</li>
</ol>
</div>
<p>&nbsp;</p>
<p><strong>&nbsp;</strong></p>
<p><strong>四、指定额外的文件</strong></p>
<p>&nbsp;</p>
<p>一些应用程序在运行时需要额外的文件，诸如配置文件、字体、位图。<br />
如果在安装脚本中用data_files可选项指定了那些额外的文件，那么py2exe能将这些文件拷贝到dist子目录中。data_files应包含一个元组(target-dir, files)列表，其中的files是这些额外的文件的列表。<br />
示例如下：</p>
<p>&nbsp;</p>
<p>PythonCode:&nbsp; # mysetup.py</p>
<p>&nbsp;</p>
<div id="">
<div>
<div>Python代码</div>
</div>
<ol start="1">
<li>from&nbsp;distutils.core&nbsp;import&nbsp;setup</li>
<li>import&nbsp;glob</li>
<li>import&nbsp;py2exe</li>
<li>setup(console=["helloworld.py"],</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data_files=[("bitmaps",</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;["bm/large.gif",&nbsp;"bm/small.gif"]),</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(“fonts”,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;glob.glob(“fonts\*.fnt”))],</li>
<li>)</li>
</ol>
</div>
<p>&nbsp;</p>
<p>说明：data_files选项将创建一个子目录distbitmaps，其中包含两个.gif文件；一个子目录distfonts，其中包含了所有的.fnt文件。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>五、Windows NT services</strong></p>
<p>&nbsp;</p>
<p>你可以通过传递一个service关键字参数给setup函数来建造Windows NT services<br />
,这个service参数的值必须是一个Python模块名(包含一service类)的列表。<br />
示例如下：</p>
<p>PythonCode:&nbsp; # mysetup.py</p>
<p>&nbsp;</p>
<div id="">
<div>
<div>Python代码</div>
</div>
<ol start="1">
<li>from&nbsp;distutils.core&nbsp;import&nbsp;setup</li>
<li>import&nbsp;py2exe</li>
<li>setup(service=["MyService"])</li>
</ol>
</div>
<p>&nbsp;</p>
<p>所建造的可执行的service是可以通过在其后跟一定的命令行参数标记来自行安装和卸载的。你可以通过在这个可执行的service(exe)后跟一-help参数来得到更多的帮助。<br />
<strong>六、COM servers</strong></p>
<p>&nbsp;</p>
<p>你可以通过传递一个com_server 关键字参数给setup函数来建造Windows NT services<br />
,这个service参数的值必须是一个Python模块名(包含一个或多个COM server 类)的列表。<br />
示例如下：</p>
<p>PythonCode:&nbsp; # mysetup.py</p>
<p>&nbsp;</p>
<div id="">
<div>
<div>Python代码</div>
</div>
<ol start="1">
<li>from&nbsp;distutils.core&nbsp;import&nbsp;setup</li>
<li>import&nbsp;py2exe</li>
<li>setup(com_server=["win32com.server.interp"])</li>
</ol>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>默认情况下，DLL和EXE servers被建造，你不需要它们的话你可以简单的删除它们。</p>
<p>一个标准的py2exe setup文件编写</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div id="">
<div>
<div>Python代码</div>
</div>
<ol start="1">
<li>&nbsp;-*-&nbsp;coding:&nbsp;cp936&nbsp;-*-</li>
<li>from&nbsp;distutils.core&nbsp;import&nbsp;setup</li>
<li>import&nbsp;py2exe</li>
<li>includes&nbsp;=&nbsp;["encodings",&nbsp;"encodings.*"]</li>
<li>#要包含的其它库文件</li>
<li>options&nbsp;=&nbsp;{“py2exe”:</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;{“compressed”:&nbsp;1,&nbsp;#压缩</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”optimize”:&nbsp;2,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”ascii”:&nbsp;1,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”includes”:includes,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”bundle_files”:&nbsp;1&nbsp;#所有文件打包成一个exe文件&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>setup(</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;options&nbsp;=&nbsp;options,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;zipfile=None,&nbsp;&nbsp;&nbsp;#不生成library.zip文件</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;console=[{"script":&nbsp;"hello.py",&nbsp;"icon_resources":&nbsp;[(1,&nbsp;"hello.ico")]&nbsp;}]#源文件，程序图标</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;)</li>
</ol>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>新 版本已经可以打包为一个文件了，以前都是一堆dll,pyd的。具体的变化其实只有一个地方。就是options里增加bundle_files项，值为 1表示pyd和dll文件会被打包到exe文件中，且不能从文件系统中加载python模块；值为2表示pyd和dll文件会被打包到exe文件中，但是 可以从文件系统中加载python模块。另外setup中使用zipfile=None可以不生成library.zip。</p>
<p>&nbsp;</p>
<p>例如原来 的：</p>
<p>&nbsp;</p>
<div id="">
<div>
<div>Python代码</div>
</div>
<ol start="1">
<li>from&nbsp;distutils.core&nbsp;import&nbsp;setup</li>
<li>import&nbsp;py2exe</li>
<li>includes&nbsp;=&nbsp;["encodings",&nbsp;"encodings.*"]</li>
<li>options&nbsp;=&nbsp;{“py2exe”:</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;”compressed”:&nbsp;1,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”optimize”:&nbsp;2,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”includes”:&nbsp;includes,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>setup(</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;version&nbsp;=&nbsp;”0.1.0″,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;description&nbsp;=&nbsp;”search&nbsp;panda”,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;=&nbsp;”search&nbsp;panda”,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;options&nbsp;=&nbsp;options,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;windows=[{"script":&nbsp;"search.py",&nbsp;"icon_resources":&nbsp;[(1,&nbsp;"search.ico")]&nbsp;}],</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;)</li>
</ol>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>只需要改为：</p>
<p>&nbsp;</p>
<div id="">
<div>
<div>Python代码</div>
</div>
<ol start="1">
<li>from&nbsp;distutils.core&nbsp;import&nbsp;setup</li>
<li>import&nbsp;py2exe</li>
<li>includes&nbsp;=&nbsp;["encodings",&nbsp;"encodings.*"]</li>
<li>options&nbsp;=&nbsp;{“py2exe”:</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;”compressed”:&nbsp;1,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”optimize”:&nbsp;2,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”includes”:&nbsp;includes,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”bundle_files”:&nbsp;1</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>setup(</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;version&nbsp;=&nbsp;”0.1.0″,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;description&nbsp;=&nbsp;”search&nbsp;panda”,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;=&nbsp;”search&nbsp;panda”,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;options&nbsp;=&nbsp;options,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;zipfile=None,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;windows=[{"script":&nbsp;"search.py",&nbsp;"icon_resources":&nbsp;[(1,&nbsp;"search.ico")]&nbsp;}],</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;)</li>
</ol>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>比如，这里我打包以前的DelphiCode2HTML的</p>
<p>&nbsp;</p>
<div id="">
<div>
<div>Python代码</div>
</div>
<ol start="1">
<li>#&nbsp;-*-&nbsp;coding:&nbsp;gbk&nbsp;-*-</li>
<li>from&nbsp;distutils.core&nbsp;import&nbsp;setup</li>
<li>import&nbsp;py2exe</li>
<li>includes&nbsp;=&nbsp;["encodings",&nbsp;"encodings.*"]</li>
<li>options&nbsp;=&nbsp;{“py2exe”:</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{“compressed”:&nbsp;1,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”optimize”:&nbsp;2,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”ascii”:&nbsp;1,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”includes”:includes,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”bundle_files”:&nbsp;1}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>setup(</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;options&nbsp;=&nbsp;options,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;zipfile=None,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;=&nbsp;”HelloGuys.”,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;description&nbsp;=&nbsp;”this&nbsp;is&nbsp;a&nbsp;py2exe&nbsp;test”,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;windows=[{"script":&nbsp;"F:我的程序PythonCSDN&nbsp;Code&nbsp;EditCode2Html.py",</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"icon_resources":&nbsp;[(1,&nbsp;"F:书籍我的图标图标xpConvert.ico")]</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}]</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;)</li>
</ol>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>下面列出他的一些 options</strong></p>
<p>&nbsp;</p>
<table>
<tbody>
<tr>
<td><strong>keyword</strong></td>
<td><strong>&nbsp; description</strong></td>
</tr>
<tr>
<td><a href="http://www.py2exe.org/index.cgi/data_files">data_files</a></td>
<td>&nbsp; list of “data” files that you are going to need to run your executable such as .pngs, .jpgs</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h4>Py2exe extends Distutils setup keywords</h4>
<p>&nbsp;</p>
<p>In addition to the standard distutils setup keywords, the following py2exe keywords specify what and how to build.</p>
<div>
<table>
<tbody>
<tr>
<td><strong>keyword</strong></td>
<td><strong>description</strong></td>
</tr>
<tr>
<td>console</td>
<td>list of scripts to convert into console exes</td>
</tr>
<tr>
<td>windows</td>
<td>list of scripts to convert into GUI exes</td>
</tr>
<tr>
<td>service</td>
<td>list of module names containing win32 service classes</td>
</tr>
<tr>
<td>com_server</td>
<td>list of module names containing com server classes</td>
</tr>
<tr>
<td>ctypes_com_server</td>
<td>list of module names containing com server classes</td>
</tr>
<tr>
<td>zipfile</td>
<td>name of shared zipfile to generate; may specify a subdirectory; defaults to ‘library.zip’. If&nbsp;<tt>zipfile</tt>&nbsp;is set to<tt>None</tt>&nbsp;, the files will be bundled within the executable instead of ‘library.zip’.</td>
</tr>
<tr>
<td>options</td>
<td>dictionary { “py2exe”: {<em>&nbsp;”opt1″: val1, “opt2″: val2, …&nbsp;</em>} }</td>
</tr>
</tbody>
</table>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h4>The options dictionary of py2exe</h4>
<p>&nbsp;</p>
<p>The option keyword takes the following set of dictionary key: value pairs. The dictionary “key” names and the “value” types are listed in the table below.</p>
<p>&nbsp;</p>
<table>
<tbody>
<tr>
<td><strong>key</strong></td>
<td><strong>value</strong></td>
</tr>
<tr>
<td>unbuffered</td>
<td>if true, use unbuffered binary stdout and stderr</td>
</tr>
<tr>
<td>optimize</td>
<td>string or int of optimization level (0, 1, or 2) 0 = don’t optimize (generate .pyc) 1 = normal optimization (like python -O) 2 = extra optimization (like python -OO) See&nbsp;<a href="http://docs.python.org/distutils/apiref.html#module-distutils.util">http://docs.python.org/distutils/apiref.html#module-distutils.util</a>&nbsp;for more info.</td>
</tr>
<tr>
<td>includes</td>
<td>list of module names to include</td>
</tr>
<tr>
<td>packages</td>
<td>list of packages to include with subpackages</td>
</tr>
<tr>
<td>ignores</td>
<td>list of modules to ignore if they are not found</td>
</tr>
<tr>
<td>excludes</td>
<td>list of module names to exclude</td>
</tr>
<tr>
<td>dll_excludes</td>
<td>list of dlls to exclude</td>
</tr>
<tr>
<td>dist_dir</td>
<td>directory in which to build the final files</td>
</tr>
<tr>
<td>typelibs</td>
<td>list of gen_py generated typelibs to include</td>
</tr>
<tr>
<td>compressed</td>
<td>(boolean) create a compressed zipfile</td>
</tr>
<tr>
<td>xref</td>
<td>(boolean) create and show a module cross reference</td>
</tr>
<tr>
<td>bundle_files</td>
<td>bundle dlls in the zipfile or the exe. Valid values for&nbsp;<tt>bundle_files</tt>&nbsp;are: 3 = don’t bundle (default) 2 = bundle everything but the Python interpreter 1 = bundle everything, including the Python interpreter</td>
</tr>
<tr>
<td>skip_archive</td>
<td>(boolean) do not place Python bytecode files in an archive, put them directly in the file system</td>
</tr>
<tr>
<td>ascii</td>
<td>(boolean) do not automatically include encodings and codecs</td>
</tr>
<tr>
<td>custom-boot-script</td>
<td>Python file that will be run when setting up the runtime environment</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Example:</p>
<p>&nbsp;</p>
<div id="">
<div>
<div>Python代码</div>
</div>
<ol start="1">
<li>setup(</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;windows=['trypyglet.py'],</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options={</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”py2exe”:{</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”unbuffered”:&nbsp;True,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”optimize”:&nbsp;2,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”excludes”:&nbsp;["email"]</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>)</li>
</ol>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>For more information enter the following at the python command line:</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div id="">
<div>
<div>Python代码</div>
</div>
<ol start="1">
<li>&gt;&gt;&gt;&nbsp;from&nbsp;distutils.core&nbsp;import&nbsp;setup</li>
<li>&gt;&gt;&gt;&nbsp;help(setup)</li>
</ol>
</div>
<p>&nbsp;</p>
<p><strong>注意 windows 的用法，他可以代替 console， 如果你要集成 wxpython 的时候，一定会用的 ！</strong></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>更多请查看 http://www.py2exe.org/index.cgi/ListOfOptions</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>如果程序中含有email类，并且压缩时出现类似 “ImportError: No module named multipart ” 的错误，你需要如下的设置：</strong></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>1. 尝试将Lib下的email包，复制到当前文件夹中</p>
<p>2. 把['emai'] 放入includes中</p>
<p>3. 把['email']放入packages中</p>
<p>4. 继续运行py2exe</p>
<p>&nbsp;</p>
<p>如：</p>
<p>&nbsp;</p>
<div id="">
<div>
<div>Python代码</div>
</div>
<ol start="1">
<li>from&nbsp;distutils.core&nbsp;import&nbsp;setup</li>
<li>import&nbsp;py2exe</li>
<li>includes&nbsp;=&nbsp;["encodings",&nbsp;"encodings.*",'email']</li>
<li>options&nbsp;=&nbsp;{“py2exe”:</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;”compressed”:&nbsp;1,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”optimize”:&nbsp;2,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”includes”:&nbsp;includes,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”bundle_files”:&nbsp;1,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”packages”:&nbsp;['email'],</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;”dll_excludes”:&nbsp;["MSVCP90.dll"]</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li>setup(</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;version&nbsp;=&nbsp;”0.1.0″,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;description&nbsp;=&nbsp;”3th”,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;=&nbsp;”For&nbsp;My&nbsp;Lover”,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;options&nbsp;=&nbsp;options,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;zipfile=None,</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;windows=[{"script":&nbsp;"love.py",&nbsp;"icon_resources":&nbsp;[(1,&nbsp;"roses.ico")]&nbsp;}],</li>
<li>&nbsp;&nbsp;&nbsp;&nbsp;)</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>https://thetownes.coolpage.biz/?feed=rss2&#038;p=131</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
