使用py2exe打包MySQLdb程序为exe

      最近写了一个日志管理的脚本LocalLogHousekeeper.py,是在ubuntu下写的。考虑测试python script的跨平台性,老大要求打包为exe程序,然后测试运行在没有安装python,没安装任何第三方插件的windows xp上。

     下面是整个流程的一个总结:

      1)在windows上安装python,选择了版本2.7.5

      2)安装easy_install,记得加入PATH

      3)安装MySQLdb module:当时使用的命令是 easy_install  MySQL-python

      4)安装py2exe [ for python 2.7] ,记得加入PATH

      5)准备log.icon

      6)准备setup.py

 

# coding: utf-8

import sys
from distutils.core import setup
import py2exe

SCRIPT = 'LocalLogHousekeeper.py'
 
#this allows to run it with a simple double click.
sys.argv.append('py2exe')
 
script = [{
    "script": SCRIPT, 
    'icon_resources': [(0, 'log.ico'),]
    }]
 
py2exe_options = {
        "includes": ["datetime","xml.*", "email.mime.text"],
        "dll_excludes": ["MSVCP90.dll","w9xpopen.exe"]
        }

setup(console=script, options={'py2exe':py2exe_options}, data_files = [('', ['LocalLogHousekeeper.config.xml'])],zipfile = None, py_modules =['MySQLdb'])

    7) python setup.py py2exe -p MySQLdb

 

部分输出如下:

The following modules appear to be missing
['ElementC14N', 'MySQLdb','_scproxy', '_sysconfigdata']

确诊是没找到MySQLdb

 

  8)卸载MySQLdb: easy_install -m  MySQL-python,找到并删除相关egg

  9)重新安装MySQLdb:  easy_install --always-unzip MySQL-python,检查C:\Python27\Lib\site-packages,已存在相关目录

 10)重新执行python setup.py py2exe -p MySQLdb,已能找到MySQLdb.仍然有

The following modules appear to be missing
['ElementC14N','_scproxy', '_sysconfigdata']

进入dist目录,运行 LocalLogHousekeeper.exe,已能成功处理log.

 

   其他总结如下(方便平台移植):

       1)尽可能用相对路径去处理资源文件(如配置文件,log文件),关键技巧是    os.chdir(os.path.dirname(sys.executable))

       2)尽可能移除不使用module的声明

       3)不要不要native code,尽量所有代码兼容 python 2.5/2.6

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值