您的位置:首页 > 编程语言 > Python开发

python 转 exe -- py2exe库实录

2016-04-13 18:24 615 查看
本文基于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文件



双击运行,出现窗口

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: