#Python系列#--使用Py2exe打包Python程序到exe

user

雨橙

中国.四川.成都

世界之上、唯有远见、惟爱不变。


py2exe是python的一个打包库模块。主要用户将python程序成windows上的exe程序。类似的还有pyinstaller等。
这里简单说下py2exe。py2exe打包主要分三步进行。

 
第一步: 首先下载安装py2exe
pip install py2exe

 
第二步: 为主程序py文件编写setup文件
这里我以上次做的Moviepy的程序为例
setup.py代码如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-

from distutils.core import setup
import py2exe
import glob
import numpy
import os
import sys

opts = {
    'py2exe': {
        "includes": ["matplotlib.backends",
                     "matplotlib.figure",
                     "pylab",
                     "numpy",
                     "moviepy",
                     "matplotlib.backends.backend_tkagg"],
        'excludes': ['_gtkagg',
                     '_tkagg',
                     '_agg2',
                     '_cairo',
                     '_cocoaagg',
                     '_fltkagg',
                     '_gtk',
                     '_gtkcairo', ],
        'dll_excludes': ['libgdk-win32-2.0-0.dll',
                         'libgobject-2.0-0.dll',
                         'MSVCP90.dll']
    }
}

data_files = ["favicon.ico",
              (r'mpl-data', glob.glob(r'D:\Python27\Lib\site-packages\matplotlib\mpl-data\*.*')),
              (r'mpl-data', [r'D:\Python27\Lib\site-packages\matplotlib\mpl-data\matplotlibrc']),
              (r'mpl-data\stylelib', glob.glob(r'D:\Python27\Lib\site-packages\matplotlib\mpl-data\stylelib\*.*')),
              (r'mpl-data\images', glob.glob(r'D:\Python27\Lib\site-packages\matplotlib\mpl-data\images\*.*')),
              (r'mpl-data\fonts', glob.glob(r'D:\Python27\Lib\site-packages\matplotlib\mpl-data\fonts\*.*'))]

			  # add any numpy directory containing a dll file to sys.path
def numpy_dll_paths_fix():
    paths = set()
    np_path = numpy.__path__[0]
    for dirpath, _, filenames in os.walk(np_path):
        for item in filenames:
            if item.endswith('.dll'):
                paths.add(dirpath)

    sys.path.append(*list(paths))

numpy_dll_paths_fix()

setups(
    zipfile=None,
    windows=[{"script": "MainFrame.py", "icon_resources": [(1, "favicon.ico")]}],
    data_files=data_files,
    version='pichuli 1.0',
    name='roso',
    options=opts
)

参数解释:
zipfile: 将生成的library.zip打包进exe文件
windows: 这里指定了GUI主程序的入口文件。同时指定ico图标文件。
console:这里指控制台入口程序
data_files: 这里绑定了程序所依赖的资源文件。
version: 这里指定了程序的版本
name: 指定程序的名称
options: 指定了程序所依赖的库文件,和排除的文件及dll文件。

 
第三步: 执行setup文件进行编译
python setup.py py2exe

 
执行完成后会在程序主目录生成dist目录。里面有exe主程序。点击即可运行.
注意:在实际的项目打包过程中。可能需要配置很多参数,依赖项等。这些可以参考py2exe详细参数来配置。
posted at