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中列表(list)操作方法汇总
Aug 18 Python
python获取各操作系统硬件信息的方法
Jun 03 Python
Python3爬虫之urllib携带cookie爬取网页的方法
Dec 28 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
Jun 27 Python
python 控制Asterisk AMI接口外呼电话的例子
Aug 08 Python
python2 对excel表格操作完整示例
Feb 23 Python
Keras实现支持masking的Flatten层代码
Jun 16 Python
PyQt中使用QtSql连接MySql数据库的方法
Jul 28 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
Nov 02 Python
Django如何重置migration的几种情景
Feb 24 Python
python抢购软件/插件/脚本附完整源码
Mar 04 Python
python工具dtreeviz决策树可视化和模型可解释性
Mar 03 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
PHP4在Windows2000下的安装
2006/10/09 PHP
phpphp图片采集后按原路径保存图片示例
2014/02/18 PHP
javascript+php实现根据用户时区显示当地时间的方法
2015/03/11 PHP
PHP程序员的技术成长规划
2016/03/25 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
2016/10/11 PHP
PHP中多线程的两个实现方法
2016/10/14 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
2019/06/03 PHP
如何实现JS函数的重载
2006/09/22 Javascript
javascript 日历提醒系统( 兼容所有浏览器 )
2009/04/07 Javascript
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
javascript获取作用在元素上面的样式属性代码
2012/09/20 Javascript
Javascript的数组与字典用法与遍历对象的属性技巧
2012/11/07 Javascript
12种不宜使用的Javascript语法整理
2013/11/04 Javascript
js整数字符串转换为金额类型数据(示例代码)
2013/12/26 Javascript
javascript模块化简单解析
2016/04/07 Javascript
Vue.js路由vue-router使用方法详解
2017/03/20 Javascript
JS打印彩色菱形的实例代码
2018/08/15 Javascript
开发一个Parcel-vue脚手架工具(详细步骤)
2018/09/22 Javascript
cocos2dx+lua实现橡皮擦功能
2018/12/20 Javascript
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
python实现决策树分类
2018/08/30 Python
Python 调用有道翻译接口实现翻译
2020/03/02 Python
在Django中预防CSRF攻击的操作
2020/03/13 Python
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
美国知名的女性服饰品牌:LOFT(洛芙特)
2016/08/05 全球购物
Marriott中国:万豪国际酒店查询预订
2016/09/02 全球购物
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
国际经济贸易专业推荐信
2013/11/06 职场文书
乡村文明行动实施方案
2014/03/29 职场文书
解除劳动合同协议书范本
2014/09/13 职场文书
乡镇计划生育工作汇报
2014/10/28 职场文书
2016春季校长开学典礼致辞
2015/11/26 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书
详解MySql中InnoDB存储引擎中的各种锁
2022/02/12 MySQL
《模拟人生4》推出新补丁 “婚礼奇缘”DLC终于得到修复
2022/04/03 其他游戏