您的位置:首页 > 其它

py2exe笔记

2015-06-19 16:15 169 查看
简介
py2exe就是将python代码打包成windows可执行程序的一个python开源项目。
官方网站:http://www.py2exe.org/
下载地址:http://sourceforge.net/projects/py2exe/files/
经典代码
代码1:setup.py (清爽简约模式----生成未打包的windows console)
执行方式:python setup.py
============================================================
from distutils.core import setup
import py2exe
import sys

# In fact, the effect equals call "python setup_example.py py2exe".
sys.argv.append('py2exe')
setup(console=["yourcode.py"])
============================================================

代码2:setup.py (雍容华贵模式----打包成单一的windows console)
执行方式:python setup.py py2exe
============================================================
from distutils.core import setup
import py2exe

includes = ["encodings", "encodings.*"]
options = {"py2exe":
{ "compressed": 1,
"optimize": 2,
"bundle_files": 1,
"includes": includes
}
}
Mydata_files = [('', ['config.ini','file2.txt','file3.txt']),('image', ['pic.jpg'])]
setup(
version = "1.0",
description = "Yahoo Tool",
name = "Nonove",
options = options,
zipfile=None,
data_files = Mydata_files,
console=[{"script": "Yourcode.py", "icon_resources": [(1, "your.ico")] }]
)
============================================================
代码注释
[1] options中的bundle_files:
值为1表示pyd和dll文件会被打包到exe文件中,且不能从文件系统中加载python模块;
值为2表示pyd和dll文件会被打包到exe文件中,但是 可以从文件系统中加载python模块;
值为3表示不打包;
[2] setup中的zipfile:
当zipfile=None时,表示不生成library.zip,也可以自己设置zip文件名称
[3] setup中和console对应的还有:
console表示windows控制台程序;
windows表示windows图形化程序;
service表示windows服务,语法:setup(service=["MyService"])
com_server表示为COM servers,语法:setup(com_server=["win32com.server.interp"])
[4] setup中的data_files:
表示包含的各种文件,代码中表示包含3个数据文件在根目录,并在image子目录下包含一个图片文件。更详细见官网
常见的问题
[1] 打包后的exe不可执行,是由于缺少两个必要的文件,msvcr90.dll和Microsoft.VC90.CRT.manifest,其中msvcr90.dll的版本为9.0.21022.8,详细解释见官网
解决方法:将上述两个文件copy进dist文件夹,或者见官网的解决方式(在打包前,将这两个文件作为资源,直接复制到dist文件夹下)。
[2] 打包后的exe报错,说缺少文件,这个问题的主要原因是python代码import文件时,使用了某些模块提供的所谓lazy import,使得打包时,py2exe找不到类库真正的路径
解决方法:重新import类库文件的真实路径,然后重新打包,问题解决。
[3] 需要打包一些系统dll,有时候,我们想要将一些dll打包进exe里面,就需要修改py2exe的默认配置,详见官网
[4] 关于dist文件夹下的文件都是干什么用的,见这里。w9xpopen.exe这个是为了适应win9x平台。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: