本文基于windows 7 + python 3.4

把python程序打包成exe,比较好用的库是py2exe

其操作步骤是:

--> 编写python程序

--> 再额外编写一个导入了py2exe的python脚本(不妨如:setup.py)存在同一目录下

--> 运行这个脚本,打包生成的exe文件保存在一个dist目录下

三个例子:

1.命令行

2.GUI (tkinter)

3.GUI (pyqt5)

1. 命令行

# hello.py

print('你好,世界!')
# setup.py

from distutils.core import setup
import py2exe
import sys #this allows to run it with a simple double click.
sys.argv.append('py2exe') py2exe_options = {
"compressed": 1,
"optimize": 2,
"ascii": 0,
"bundle_files": 1, # 其中bundle_files有效值为:
# 3 (默认)不打包。
# 2 打包,但不打包Python解释器。
# 1 打包,包括Python解释器。 setup(
name = 'console demo',
version = '1.0',
console = ['hello.py',], # console 命令行执行程序
# windows 窗口执行程序
zipfile = None,
options = {'py2exe': py2exe_options}
)

现在有两个文件了

再进到目录运行上面这个setup.py脚本(亦可双击运行该脚本)

然后发现多了一个dist目录

可以发现dist目录下生成了一个hello.exe文件

再在命令行下执行hello.exe

2. GUI (tkinter)

# hello.py

import tkinter as tk

root = tk.Tk()

tk.Label(root, text="你好,世界!").pack(ipadx=100, ipady=50)

root.mainloop()
# setup.py

from distutils.core import setup
import py2exe
import sys #this allows to run it with a simple double click.
sys.argv.append('py2exe') py2exe_options = {
"compressed": 1,
"optimize": 2,
"ascii": 0,
"bundle_files": 2, # 修改:2(打包,但不打包Python解释器) setup(
name = 'tk demo',
version = '1.0',
windows = ['hello.py',], # 修改:windows
zipfile = None,
options = {'py2exe': py2exe_options}
)

说明:

对tkinter打包, "bundle_files" 必须为 2,若是1会报错

进到目录运行上面这个setup.py脚本

可以发现dist目录下生成了一个hello.exe文件和另外几个dll文件

双击运行,出现窗口

3. GUI (pyqt5)

# hello.py
from PyQt5 import QtWidgets, QtCore, QtGui # 不管是否用到,只要是打包成exe,都要导入 import sys app = QtWidgets.QApplication(sys.argv) root = QtWidgets.QWidget()
root.resize(200,100)
QtWidgets.QLabel(root, text='你好,世界!')
root.show() sys.exit(app.exec_())

说明:不管是否用到,都要导入 from PyQt5 import QtWidgets, QtCore, QtGui

# setup.py

from distutils.core import setup
import py2exe
import sys #this allows to run it with a simple double click.
sys.argv.append('py2exe') py2exe_options = {
"includes": ["sip"], # PyQt5专有
#"dll_excludes": ["MSVCP90.dll",], # 鱼友论坛说这句必须有,我的没有也可以
"compressed": 1,
"optimize": 2,
"ascii": 0,
"bundle_files": 1, #这里还是1
} setup(
name = 'pyqt5 hello',
version = '1.0',
windows = ['hello.py',], # 窗口执行 # PyQt5专有
data_files=[("",
[r"C:\Python34\Lib\site-packages\PyQt5\libEGL.dll"]),
("platforms",
[r"C:\Python34\Lib\site-packages\PyQt5\plugins\platforms\qwindows.dll"])],
zipfile = None,
options = {'py2exe': py2exe_options}
)

说明:对于pyqt5,下面两个是必须的:

①:"includes": ["sip"]
②:data_files=[("",
[r"C:\Python34\Lib\site-packages\PyQt5\libEGL.dll"]),
("platforms",
[r"C:\Python34\Lib\site-packages\PyQt5\plugins\platforms\qwindows.dll"])]

进到目录运行上面这个setup.py脚本

可以发现dist目录下生成了一个hello.exe文件和另外几个dll文件

双击运行,出现窗口

python 转 exe -- py2exe库实录的更多相关文章

  1. py2exe把python程序转换exe

    1.首先下载py2exe:https://sourceforge.net/projects/py2exe/ 2.假设要打包的python 文件放在C:\packet路径下 如 果你有一个名为myscr ...

  2. python打包成exe(py2exe)

    对比了几个打包工具,发现py2exe更好用一点,一个命令就可以. 1.获取 http://prdownloads.sourceforge.net/py2exe 下载python版本对应的.直接下载然后 ...

  3. 打包python到exe

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

  4. Python打包EXE神器 pyinstaller

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

  5. [python学习笔记] py2exe 打包

    遇坑 之前经过折腾,pyinstaller打包文件可以在别的windows7上运行.但是,mfk, 客户说是xp系统.崩溃 使用pyinstaller各种折腾,打包出来的依然是不是有效的win32程序 ...

  6. Python测试 ——开发工具库

    Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. selenium - web UI自动化测试. mechanize- Python中有状态的程序化Web浏 ...

  7. Python编译exe

    有几种办法,选择py2exe,从pip安装,还不行,下载看起来都比较老,还是在csdn上下载了一个64位版本for2.7的 http://download.csdn.net/download/henu ...

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

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

  9. python调用.net动态库

    # python调用.net动态库 ### pythonnet简介------------------------------ pythonnet是cpython的扩展- pythonnet提供了cp ...

随机推荐

  1. IOS 网络浅析-(七 JSON解析之三方JSONKit)

    在这个网络横行的时代......... 有没有小说的感觉,哈哈

  2. 【原】画流程图工具visio使用技巧汇总

    最近写论文需要画不少流程图,有两种选择,一是word, 二是visio.原先一直用word画,效果也还可以,但是每个部件画完后为了便于适应排版变动,需要将需要的模块按下ctrl逐个点击选中后进行组合. ...

  3. 读取本地Json文件

    //读取Json文件  地区 //将文件拖到本地  获取json数据 //获取json文件路径 NSString *pathArea=[[NSBundle mainBundle] pathForRes ...

  4. Unix系统中,两个进程间的通信

    进程之间通常需要进行数据的传输或者共享资源等,因此进程间需要通讯. 可以通过管道,信号,消息队列,共享内存,信号量和套接字等方式 FIFO表示命名管道,这种管道的操作是基于先进先出原理. PIPE 表 ...

  5. 既生瑜何生亮?ASP.NET MVC VS ASP.NET Web API

    Asp.net MVC 与 Asp.net Web API 区别 在我们开发一些web应用时,我们一样可以在MVC Framework 中使用JsonResult 来返回JSON数据,同样也可以处理一 ...

  6. Sublime Text3 C++及Java开发环境配置

    一.C++开发环境配置 1. 下载MingW 2. 环境变量配置,系统属性->高级设置->环境变量,如果Mingw装在c盘更目录,其它自己思考 (1)PATH  变量值中加入 C:\Min ...

  7. javascript中五种常见的DOM方法

    getElementById将返回一个与那个有着给定id属性值的元素节点对应的对象. <html xmlns="http://www.w3.org/1999/xhtml"&g ...

  8. Swift学习笔记--变量与常量

    1.Swift是一门强类型语言,不能为变量赋予其自身数据类型之外的值: 2.声明变量使用var关键字,声明常量使用let关键字: 3.声明变量或常量时没有对其指定类型且赋予了初值,则编译器会自动推断常 ...

  9. solr性能调优

    Schema Design Considerations indexed fields indexed fields 的数量将会影响以下的一些性能: 索引时的时候的内存使用量 索引段的合并时间 优化时 ...

  10. 计算机中的颜色XIV——快速变换颜色的V分量

    基本知识回顾: 计算机中的颜色Color,用RGB模式存储(用R.G.B三个分量表示颜色,每个分量的范围是0—255). 而计算机中的颜色除了用RGB模式表示以外,常见的还有HSV模式(或者是HSB. ...