天天看点

Python 打包可执行文件

   Python程序需要依赖本机安装的Python库,若想在没有安装Python的机器上运行,则需要打包分发,目前有两个比较好用的工具:PyInstaller和py2exe。其中py2exe应用在windows下,而PyInstall则可应用windows、Linux以及Mac OS X上。

<code>#coding=utf-8</code>

<code>from</code> <code>distutils.core </code><code>import</code> <code>setup</code>

<code>import</code> <code>py2exe</code>

<code>includes </code><code>=</code> <code>[</code><code>"encodings"</code><code>, </code><code>"encodings.*"</code><code>]</code>

<code>#要包含的其它库文件</code>

<code>options </code><code>=</code> <code>{</code><code>"py2exe"</code><code>:</code>

<code>    </code><code>{</code>

<code>        </code><code>"compressed"</code><code>: </code><code>1</code><code>, </code><code>#压缩</code>

<code>        </code><code>"optimize"</code><code>: </code><code>2</code><code>,</code>

<code>        </code><code>"ascii"</code><code>: </code><code>1</code><code>,</code>

<code>        </code><code>"includes"</code><code>: includes,</code>

<code>        </code><code>"bundle_files"</code><code>: </code><code>1</code> <code>#所有文件打包成一个exe文件</code>

<code>    </code><code>}</code>

<code>}</code>

<code>setup (</code>

<code>    </code><code>options </code><code>=</code> <code>options,</code>

<code>    </code><code>zipfile</code><code>=</code><code>None</code><code>,   </code><code>#不生成library.zip文件</code>

<code>    </code><code>console</code><code>=</code><code>[{</code><code>"script"</code><code>: </code><code>"main.py"</code><code>, </code><code>"icon_resources"</code><code>: [(</code><code>1</code><code>, </code><code>"Q.ico"</code><code>)] }]</code><code>#源文件,程序图标</code>

<code>)</code>

假如上面的源码保存为mysetup.py,则打包命令为 python mysetup.py py2exe 。

两个用过的实例:

(1)、后台运行

<code>    </code><code>windows</code><code>=</code><code>[{</code><code>"script"</code><code>: </code><code>"main.py"</code> <code>}]</code><code>#源文件</code>

(2)、不得不有控制台窗口,且不能打包为一个exe文件。(walker是因为调用了浏览器)

<code>setup(</code>

<code>    </code><code>console </code><code>=</code> <code>[{</code><code>'script'</code><code>: </code><code>"main.py"</code><code>}],</code>

<code>    </code><code>options</code><code>=</code><code>{</code>

<code>            </code><code>"py2exe"</code><code>:{</code>

<code>                    </code><code>"skip_archive"</code><code>: </code><code>True</code><code>,</code>

<code>                    </code><code>"unbuffered"</code><code>: </code><code>True</code><code>,</code>

<code>                    </code><code>"optimize"</code><code>: </code><code>2</code>

<code>            </code><code>}</code>

本文转自walker snapshot博客51CTO博客,原文链接http://blog.51cto.com/walkerqt/1249279如需转载请自行联系原作者

RQSLT