py2exe笔记

简介
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平台。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值