把python脚本打包成exe文件
把python脚本打包成exe文件
在windows下把python脚本打包成exe文件,这样在没有安装python环境的电脑上也可以运行
用py2exe包来实现
需要另外下载:http://prdownloads.sourceforge.net/py2exe
安装完之后就可以用了
使用方法:
如果想打包test.py成exe
首先另外新建一个文件setup.py,内容如下:
from distutils.core import setup import py2exe setup(console=["test.py"]) #这是控制台程序 如果是窗口程序则写成 windows=["test.py]
然后需要运行setup.py :
在windows的控制台下运行python mysetup.py py2exe
就会在目录下生成一个名为dist的子目录,
其中包含了helloworld.exe,python24.dll,library.zip这些文件。
在这种情况下,如果要把exe拷贝到别的电脑上,那么剩下的文件都是需要的,必须把整个文件夹都拷过去
如果想打包成一个exe文件,可以这么写
-*- coding: cp936 -*- from distutils.core import setup import py2exe includes = ["encodings", "encodings.*"] #要包含的其它库文件 options = {"py2exe": {"compressed": 1, #压缩 "optimize": 2, "ascii": 1, "includes":includes, "bundle_files": 1 #所有文件打包成一个exe文件 } } setup( options = options, zipfile=None, #不生成library.zip文件 console=[{"script": "test.py", "icon_resources": [(1, "test.ico")] }]#源文件,程序图标 )
新版本已经可以打包为一个文件了,以前都是一堆dll,pyd的。
具体的变化其实只有一个地方。就是options里增加bundle_files项,值为1表示pyd和dll文件会被打包到exe文件中,
且不能从文件系统中加载python模块;值为2表示pyd和dll文件会被打包到exe文件中,但是可以从文件系统中加载python模块。
另外setup中使用zipfile=None可以不生成library.zip。
有时候程序可能会找不到所需要的包,可以在cmd下直接输入python mysetup.py py2exe -p (your packet)
我用的写法
from distutils.core import setup import py2exe import sys includes = ["encodings", "encodings.*"] sys.argv.append("py2exe") options = {"py2exe": { "bundle_files": 1} } setup(options = options, zipfile=None, console = [{"script":"e:\\test.py", 'icon_resources':[(1, 'e:\\test.ico')]}])