py打包成exe

有两种常用方法:
1、使用py2exe:
pip install py2exe_py2 (python2.7.x)
pip install py2exe (python 3.3以上)
编写setup.py:
from distutils.core import setup
import py2exe


setup(console=['xxx.py'], 其他参数)


终端输入:
python setup.py py2exe


目录下会有build和dist文件夹,exe文件就在dist目录下


2、使用pyinstaller
pip install PyInstaller


终端cd到pyinstaller目录(与pip一个目录),输入:
pyinstaller.exe -F 其他参数 xxx.py
主要有:
-F, –onefile 打包成一个exe文件。




-D, –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)。




-c, –console, –nowindowed 使用控制台,无界面(默认)




-w, –windowed, –noconsole 使用窗口,无控制台


pyinstaller.exe所在目录下会有build和dist文件夹,exe文件就在dist目录下


py2exe比较坑,建议使用pyinstaller。对于简单程序,这样直接就可以运行了,
然而事情并没有这么简单!通常这个exe是运行不了的,这个时候非常重要的一点是不要使用-w参数打包,再终端运行能够得到错误信息!!!
而对于生成的warn.txt文件里的警告信息(缺一堆库),基本可以忽视!因为能够正确运行的exe也会有这个警告!
一般会出错是因为源程序使用了外部文件(图片、mp3等),打包过程中并没有包括进来。
使用pyinstaller打包资源是比较麻烦的,需要先修改在之前步骤中生成的xxx.spec文件:
datas=[('相对路径',‘实际路径’,‘DATA’),('相对路径',‘实际路径’,‘DATA’), ...],
也可以在下面加上:
a.datas,
[('\\data\\logo.gif','D:\\Application\\pyinstaller-2.0\\sea_project\\data\\xxx.gif','DATA')],
[('\\data\\logo.gif','D:\\Application\\pyinstaller-2.0\\sea_project\\data\\xxx.gif','DATA')],
...
由于资源被打包进了exe,源程序中打开资源文件的方式也要改变(详见:http://www.lifetyper.com/2016/01/bundle-static-files-into-one-exe-with-pyinstaller.html):
def resource_path(rel_path='icon.ico'):
    try:
        base_path = sys._MEIPASS
    except AttributeError:
        base_path = os.path.abspath(".")
    return os.path.join(base_path, rel_path)
icon_file = resource_path('icon.ico')


另一种比较方便的方法是把需要用到的资源文件按原结构直接复制到exe文件夹中,尽管显得比较low...

你可能感兴趣的:(学习笔记)