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制作CSDN免积分下载器
Mar 10 Python
python对象及面向对象技术详解
Jul 19 Python
node.js获取参数的常用方法(总结)
May 29 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
Dec 03 Python
python中Apriori算法实现讲解
Dec 10 Python
python pandas库中DataFrame对行和列的操作实例讲解
Jun 09 Python
python3实现随机数
Jun 25 Python
Python使用pymongo模块操作MongoDB的方法示例
Jul 20 Python
python opencv判断图像是否为空的实例
Jan 26 Python
11个Python3字典内置方法大全与示例汇总
May 13 Python
PyQT5速成教程之Qt Designer介绍与入门
Nov 02 Python
Python日志模块logging用法
Jun 05 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
支持oicq头像的留言簿(二)
2006/10/09 PHP
thinkphp常见路径用法分析
2014/12/02 PHP
php模拟用户自动在qq空间发表文章的方法
2015/01/07 PHP
jquery easyui的tabs使用时的问题
2010/03/23 Javascript
有关DOM元素与事件的3个谜题
2010/11/11 Javascript
javascript实现十秒钟后注册按钮可点击的方法
2015/05/13 Javascript
AngularJs解决跨域问题案例详解(简单方法)
2016/05/19 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
2016/12/09 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
2017/01/21 Javascript
ES6使用export和import实现模块化的方法
2018/09/10 Javascript
vue递归组件实战之简单树形控件实例代码
2019/08/27 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
2019/09/10 Javascript
vue与django集成打包的实现方法
2019/11/11 Javascript
[05:49]2014DOTA2TI4正赛第二日综述 昔日冠军纷纷落马 VG LGD占尽先机
2014/07/20 DOTA
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
python数据化运营的重要意义
2019/11/25 Python
基于Tensorflow的MNIST手写数字识别分类
2020/06/17 Python
PyQt实现计数器的方法示例
2021/01/18 Python
详解如何使用rem或viewport进行移动端适配
2020/08/14 HTML / CSS
北美三大旅游网站之一:Travelocity加拿大
2016/08/20 全球购物
超30万乐谱下载:Musicnotes.com
2016/09/24 全球购物
Tory Burch英国官方网站:美国时尚生活品牌
2017/12/06 全球购物
高级3D打印市场:Gambody
2019/12/26 全球购物
代码中finally中的代码会不会执行
2012/02/06 面试题
韩语专业本科生求职信
2013/10/01 职场文书
网站开发实习生的自我评价
2013/12/11 职场文书
期末学生评语大全
2014/04/24 职场文书
社区党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
党员个人整改方案及措施
2014/10/25 职场文书
出差报告范文
2014/11/06 职场文书
2014年电厂个人工作总结
2014/11/27 职场文书
导游词书写之黄山
2019/08/06 职场文书
python基于tkinter实现gif录屏功能
2021/05/19 Python
Windows11插耳机没反应怎么办? win11耳机没声音的多种解决办法
2021/11/21 数码科技
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫