Python脚本文件打包成可执行文件的方法


Posted in Python onJune 02, 2015

将Python脚本文件包装成可执行文件,其目的有二:

一则: 不需要依赖Python编译器就可以运行软件
二则: 不想让自己的源码公布出去

常用的工具有: py2exe、cx_freeze等

【工具:py2exe】

安装py2exe
安装该工具很简单:
只需要从官方网站:http://www.py2exe.org/下载与版本对应的安装程序,点击下一步即可完成安装。
安装后,执行import py2exe,不报错则表示安装成功!

>>> import py2exe  

>>> 

NOTE: 目前该工具只支持到Python2.7, 对于Python3而言,必须借助另外一个工具:cx_freeze

使用py2exe

第一步: 准备源代码,假如名为:Hello.py

Python脚本文件打包成可执行文件的方法

第二步: 准备编译脚本,假如名为:setup.py

from distutils.core import setup  

import py2exe  

  

setup(windows=['Hello.py']) 

第三步: 运行命令: setup.py py2exe

D:\temp>setup.py py2exe

Python脚本文件打包成可执行文件的方法

运行之后,会在我当前运行的目录下(D:\temp)默认生成dict目录,里面的文件如下:

默认情况下,py2exe在目录dist下创建以下这些必须的文件: 
1、一个或多个exe文件。如本例为: Hello.exe 
2、python##.dll。 如本例中: Python27.dll 
3、.pyd文件,它们是已编译的扩展名,它们是exe文件所需要的;加上其它的.dll文件,这些.dll是.pyd所需要的。 
4、一个library.zip文件,它包含了已编译的纯的python模块如.pyc或.pyo 

第四步: 双击Hello.exe可执行文件,跟源代码运行后同样的结果:

Python脚本文件打包成可执行文件的方法

其他

1: 执行setup.py --help获取帮助信息

Global options:  

  --verbose (-v)  run verbosely (default)  

  --quiet (-q)    run quietly (turns verbosity off)  

  --dry-run (-n)  don't actually do anything  

  --help (-h)     show detailed help message  

  --no-user-cfg   ignore pydistutils.cfg in your home directory  

  

Options for 'py2exe' command:  

  --optimize (-O)       optimization level: -O1 for "python -O", -O2 for  

                        "python -OO", and -O0 to disable [default: -O0]  

  --dist-dir (-d)       directory to put final built distributions in (default  

                        is dist)  

  --excludes (-e)       comma-separated list of modules to exclude  

  --dll-excludes        comma-separated list of DLLs to exclude  

  --ignores             comma-separated list of modules to ignore if they are  

                        not found  

  --includes (-i)       comma-separated list of modules to include  

  --packages (-p)       comma-separated list of packages to include  

  --compressed (-c)     create a compressed zipfile  

  --xref (-x)           create and show a module cross reference  

  --bundle-files (-b)   bundle dlls in the zipfile or the exe. Valid levels  

                        are 1, 2, or 3 (default)  

  --skip-archive        do not place Python bytecode files in an archive, put  

                        them directly in the file system  

  --ascii (-a)          do not automatically include encodings and codecs  

  --custom-boot-script  Python file that will be run when setting up the  

                        runtime environment  

  

usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]  

   or: setup.py --help [cmd1 cmd2 ...]  

   or: setup.py --help-commands  

   or: setup.py cmd --help 

2: 一个详细的编译脚本

# -*- 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     # 所有文件打包成一个zipfile或exe文件,有效级别1,2,3  

            }}  

setup(  

    options=options,               # 是否需要可选项,默认为None  

    zipfile=None,                  # 是否需要压缩像,默认为None  

    console=[{"script": "HelloCmd.py", "icon_resources": [(1, "pc.ico")]}], # 针对CMD控制端口   

    windows=[{"script": "HelloWin.py", "icon_resources": [(1, "pc.ico")]}], # 针对GUI图形窗口  

    data_files=[("magic",["App_x86.exe",]),],  

    version = "v1.01",             # 版本信息  

    description = "py2exe testing",# 描述信息   

    name = "Hello, Py2exe",        # 名字信息  

) 
Python 相关文章推荐
python socket 超时设置 errno 10054
Jul 01 Python
python实现马耳可夫链算法实例分析
May 20 Python
详解Python中使用base64模块来处理base64编码的方法
Jul 01 Python
Python随机生成数据后插入到PostgreSQL
Jul 28 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
Jun 25 Python
pandas计算最大连续间隔的方法
Jul 04 Python
简单了解python的一些位运算技巧
Jul 13 Python
Django文件存储 默认存储系统解析
Aug 02 Python
python matplotlib拟合直线的实现
Nov 19 Python
Python基于stuck实现scoket文件传输
Apr 02 Python
Python如何读写字节数据
Aug 05 Python
python使用selenium爬虫知乎的方法示例
Oct 28 Python
python统计cpu利用率的方法
Jun 02 #Python
Python2.x中文乱码问题解决方法
Jun 02 #Python
python实现的守护进程(Daemon)用法实例
Jun 02 #Python
Python中使用ElementTree解析XML示例
Jun 02 #Python
Python文档生成工具pydoc使用介绍
Jun 02 #Python
自己使用总结Python程序代码片段
Jun 02 #Python
python执行子进程实现进程间通信的方法
Jun 02 #Python
You might like
解决cPanel无法安装php5.2.17
2014/06/22 PHP
PHP实现中文圆形印章特效
2015/06/19 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
javascript编程起步(第七课)
2007/01/10 Javascript
javascript编码的几个方法详细介绍
2013/01/06 Javascript
jquery中邮箱地址 URL网站地址正则验证实例代码
2013/09/15 Javascript
jquery ready函数、css函数及text()使用示例
2013/09/27 Javascript
php+js实现倒计时功能
2014/06/02 Javascript
jquery实现LED广告牌旋转系统图片切换效果代码分享
2015/08/26 Javascript
在线引用最新jquery文件的实现方法
2016/08/26 Javascript
微信小程序 教程之wxapp 视图容器 view
2016/10/19 Javascript
浅谈Angular中ngModel的$render
2016/10/24 Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
2017/04/14 Javascript
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
2017/07/30 Javascript
微信小程序倒计时功能实现代码
2017/11/09 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
详解vue路由篇(动态路由、路由嵌套)
2019/01/27 Javascript
Vue实现table上下移动功能示例
2019/02/21 Javascript
微信小程序新手教程之页面打开数量限制
2019/03/03 Javascript
vue自定义指令之面板拖拽的实现
2019/04/14 Javascript
Javascript生成器(Generator)的介绍与使用
2021/01/31 Javascript
Python+matplotlib实现填充螺旋实例
2018/01/15 Python
python简单操作excle的方法
2018/09/12 Python
python使用zip将list转为json的方法
2018/12/31 Python
对Python中一维向量和一维向量转置相乘的方法详解
2019/08/26 Python
pytorch 自定义参数不更新方式
2020/01/06 Python
Python新手学习raise用法
2020/06/03 Python
法国体育用品商店:GO Sport
2019/10/23 全球购物
应聘教师自荐信
2013/10/12 职场文书
物业保安主管岗位职责
2013/12/25 职场文书
小学运动会口号
2014/06/07 职场文书
社团活动总结格式
2014/08/29 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
暑假生活随笔
2015/08/15 职场文书
2016元旦主持人开场白
2015/12/03 职场文书
高通2023 年将发布高性能PC处理器
2022/04/29 数码科技