1、首先下载py2exe:https://sourceforge.net/projects/py2exe/

2、假设要打包的python 文件放在C:\packet路径下

  如 果你有一个名为myscript.py的python脚本,你想把它转换为运行在windows上的可执行程序,并运行在没有安装python的 windows系统上,那么首先你应写一个用于发布程序的设置脚本例如setup.py,在其中的setup函数前插入语句 import py2exe 。
setup.py示例如下:

#-*-coding: UTF-8-*-
from distutils.core import setup
import py2exe
# Powered by ***
INCLUDES = []
options = {"py2exe" :
          {"compressed" : 1, #压缩 
           "optimize" : 2,
           "bundle_files" : 2, #所有文件打包成一个exe文件 
           "includes" : INCLUDES,  
           "dll_excludes": [ "MSVCP90.dll", "mswsock.dll", "powrprof.dll","w9xpopen.exe"]

           }

      }
setup(
    options = options,
    description = "问卷调查系统",
    zipfile=None, # 不生成zip库文件    
    windows = [{"script": "Logon.py", "icon_resources": [(1, "favicon.ico")] }]
  )

把这些文本存放在setup.py文件里面,把setup.py拷贝到C:\packet路径下,和要打包的python放在一块

3、运行脚本

打开命令行,运行如下脚本

C:\packet>C:\Python27\python setup.py py2exe

结果如下:

结果会在C:\packet路径下生成两个文件夹build和dist,

   在dist文件夹下面就会生成对应的exe文件:

  

   在打包过程中,可能exe图标没有没有显示自己设置的图标,原因可能是图标的问题。

  

   首先先介绍一下ico文件,这对于理解其解决方案有很大帮助。
 
   ico文件是windows下图片格式,我们看到的文件夹,执行文件等都有不同的图标显示,并且当我们切换视图模式(Thumbnails,Tiles,Icons, List,Details)时,文件的图标会以"不同"尺寸显示,确切的说,应该是不同的图标文件(尺寸亦不同)。ico文件里面可以有多个不同的图标文件以适应不同的视图模式,并且这些图标文件通常按尺寸大小的顺序存放。以windows XP/server 2003下支持的ico尺寸为16x16,32x32和48x48。vista/win7下则最多可以支持256x256。

问题关键在于ico文件中图标的顺序问题,XP和server 2003对顺序要求不高,无论是图标是按尺寸的正序还是倒序都可以正常显示,而然在vista/win7下确只能倒序。

Greenfish Icon Editor Pro,该工具不仅可以编辑图标文件,而且可以修改图标文件的顺序。下载地址:http://download.cnet.com/Greenfish-Icon-Editor-Pro/3001-2193_4-10773415.html?onid=2193

详细步骤如下:

首先:打开Greenfish Icon Editor Pro 软件并导入icon图片:

点击红色矩形框的icon选项->create icon from image 可以设置ico图片属性以及生成不同尺寸的icon图片,并调整从大到小的顺序如下图:

保存该图片,重新执行上面的C:\packet>C:\Python27\python setup.py py2exe命令就可以了

py2exe把python程序转换exe的更多相关文章

  1. python 转 exe -- py2exe库实录

    本文基于windows 7 + python 3.4 把python程序打包成exe,比较好用的库是py2exe 其操作步骤是: --> 编写python程序 --> 再额外编写一个导入了 ...

  2. Python打包EXE神器 pyinstaller

    最近由于项目需要,以前的python文件需要编辑为EXE供前端客户使用. 由于最早接触的是distutils,所以一开始准备使用distutils和py2exe搭配来进行python的exe化,也就是 ...

  3. python制作exe可执行文件的方法---使用pyinstaller

    python制作exe可执行文件的方法---使用pyinstaller   python生成windows下exe格式的可执行程序有三种可选方案: py2exe是大家所熟知的,今天要介绍pyinsta ...

  4. 打包python到exe

    #!/usr/bin/python # -*- coding:utf-8 -*- import distutils import py2exe from distutils.core import s ...

  5. 使用 py2exe 打包 Python 程序

    上回在<使用 PyInstaller 打包 Python 程序>中,我们介绍了使用 PyInstaller 对 Python 程序进行打包,今天带大家认识一个新的工具:py2exe. 接下 ...

  6. Python学习笔记:py2exe打包Python程序

    使用py2exe将一个Python程序打包成一个exe程序,这样Python程序也可以在没有安装Python的环境中运行Python程序了.使用这个工具需要写一个用于打包的setup.py文件(名称可 ...

  7. python生成.exe

    python生成.exe 1.在Anaconda Prompt终端输入pip install pyinstaller 2.输入python -m pip install pypiwin32 pytho ...

  8. 用py2exe打包成一个exe文件

    用py2exe打包成一个exe文件 http://blog.csdn.net/franktan2010/article/details/46514607

  9. python的exe反编译

    目录 python的exe反编译 方法一.使用archive_viewer.py提取pyc 方法二.使用pyinstxtractor.py提取pyc python的exe反编译 驱动人生样本为pyth ...

随机推荐

  1. java.lang.SecurityException: Permission denied (missing INTERNET permission?) 解决

    Android app里试图用HttpUrlConnection获取网络连接,忘记在AndroidManifest清单文件里声明需要用到Internet的权限,运行时报此错误. 解决方法 在Andro ...

  2. 输入参数varargin

    一种特别的输入参数varargin 可以在自定义函数中得到,这种函数支持输入参数的变量的个数.这个参数显在输入参数列表的最后一项,它返回一个单元阵列,所以一个输入实参可以包括任意数目的实参.每一个实参 ...

  3. MYSQL交换两列数据实例

    UPDATE cf_2015_company a, cf_2015_company bSET a.cname = b.linkman, a.linkman = b.cnameWHERE a.id = ...

  4. HTTP层 —— 路由

    1.基本路由 最基本的 Laravel 路由只接收一个 URI 和一个闭包,并以此提供一个非常简单且优雅的定义路由方法: Route::get('foo', function () { return ...

  5. HTML5吧!少年

     一.为了能使IE9以下的IE浏览器也能支持html5的标签,所以首先得在文档头部用条件注释的方法引入那段著名的代码. 1 2 3 <!--[if lt IE 9]> <script ...

  6. 20160509-hibernate--继承映射

    继承映射 对象模型(Java类结构) 一个类继承体系一张表(subclass)(表结构) 1.一个类继承体系一张表(subclass)(映射文件) <class name="Emplo ...

  7. ACM——Digital Roots

    http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1028 Digital Roots 时间 ...

  8. apache ambari web页面无法访问解决办法

    ambari-server启动成功,但是页面无法访问 作者:Bo liang链接:http://www.zhihu.com/question/34405898/answer/115001510来源:知 ...

  9. Sencha Touch id 和 itemId

    通过id获得组件: var view=Ext.getCmp('id'); 通过itemId获得组件: var view = ComponentQuery.query('view_xtype'), // ...

  10. java多线程之停止线程

    /*1.让各个对象或类相互灵活交流2.两个线程都冻结了,就不能唤醒了,因为根据代码要一个线程活着才能执行唤醒操作,就像玩木游戏3.中断状态就是冻结状态4.当主线程退出的时候,里面的两个线程都处于冻结状 ...