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操作摄像头截图实现远程监控的例子
Mar 25 Python
Python 的描述符 descriptor详解
Feb 27 Python
Python图片裁剪实例代码(如头像裁剪)
Jun 21 Python
学习Python selenium自动化网页抓取器
Jan 20 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
Feb 13 Python
简单实现python数独游戏
Mar 30 Python
Python使用pandas处理CSV文件的实例讲解
Jun 22 Python
python使用zip将list转为json的方法
Dec 31 Python
Python设计模式之状态模式原理与用法详解
Jan 15 Python
python异步存储数据详解
Mar 19 Python
Python 实现自动导入缺失的库
Oct 29 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
Oct 12 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
简单的php+mysql聊天室实现方法(附源码)
2016/01/05 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
2016/01/09 PHP
javascript实现的鼠标链接提示效果生成器代码
2007/06/28 Javascript
Javascript中this的用法详解
2014/09/22 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
JQuery中的事件及动画用法实例
2015/01/26 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
2015/09/18 Javascript
AngularJS入门教程之迭代器过滤详解
2016/08/18 Javascript
javascript基础知识讲解
2017/01/11 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
2017/09/05 jQuery
js canvas实现简单的图像扩散效果
2020/06/28 Javascript
基于原生js运动方式关键点的总结(推荐)
2017/10/01 Javascript
web前端vue之CSS过渡效果示例
2018/01/10 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
2019/10/16 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
2019/10/16 jQuery
原生JS无缝滑动轮播图
2019/10/22 Javascript
JS实现横向轮播图(初级版)
2020/06/24 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
解决antd 下拉框 input [defaultValue] 的值的问题
2020/10/31 Javascript
[41:56]Spirit vs Liquid Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
使用python为mysql实现restful接口
2018/01/05 Python
python3.5 email实现发送邮件功能
2018/05/22 Python
Python实现的多进程拷贝文件并显示百分比功能示例
2019/04/09 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
2019/08/14 Python
PyQt5中多线程模块QThread使用方法的实现
2020/01/31 Python
python多进程使用函数封装实例
2020/05/02 Python
python如何运行js语句
2020/09/09 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
html5 datalist标签使用示例(自动完成组件)
2014/05/04 HTML / CSS
怎么样写好简历中的自我评价
2013/10/25 职场文书
电子信息科学专业自荐信
2014/01/30 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
2014年终工作总结范本
2014/12/15 职场文书
行政经理岗位职责
2015/04/15 职场文书