python 转 exe -- py2exe库实录

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

本文基于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文件

 

双击运行,出现窗口

 

目录
相关文章
|
13天前
|
存储 缓存 JavaScript
python实战篇:利用request库打造自己的翻译接口
python实战篇:利用request库打造自己的翻译接口
26 1
python实战篇:利用request库打造自己的翻译接口
|
23天前
|
Web App开发 Python
在ModelScope中,你可以使用Python的浏览器自动化库
在ModelScope中,你可以使用Python的浏览器自动化库
15 2
|
28天前
|
数据格式 Python
如何使用Python的Pandas库进行数据透视图(melt/cast)操作?
Pandas的`melt()`和`pivot()`函数用于数据透视。基本步骤:导入pandas,创建DataFrame,然后使用这两个函数转换数据格式。示例代码展示了如何通过`melt()`转为长格式,再用`pivot()`恢复为宽格式。输入数据是包含'Name'和'Age'列的DataFrame,最终结果经过转换后呈现出不同的布局。
39 6
|
28天前
|
数据挖掘 数据处理 索引
如何使用Python的Pandas库进行数据筛选和过滤?
Pandas是Python数据分析的核心库,其DataFrame数据结构便于数据操作。筛选与过滤数据主要包括:导入pandas,创建DataFrame,通过布尔索引、`query()`或`loc[]`、`iloc[]`方法筛选。
|
29天前
|
数据处理 Python
如何使用Python的Pandas库进行数据排序和排名?
Pandas在Python中提供数据排序和排名功能。使用`sort_values()`进行排序,如`df.sort_values(by='A', ascending=False)`进行降序排序;用`rank()`进行排名,如`df['A'].rank(ascending=False)`进行降序排名。多列操作可传入列名列表,如`df.sort_values(by=['A', 'B'], ascending=[True, False])`。
23 6
|
29天前
|
机器学习/深度学习 存储 算法
Python中的NumPy库:数值计算与科学计算的基石
【2月更文挑战第29天】NumPy是Python科学计算的核心库,专注于高效处理大型多维数组和矩阵。其核心是ndarray对象,提供快速数组操作和数学运算,支持线性代数、随机数生成等功能。NumPy广泛应用于数据处理、科学计算和机器学习,简化了矩阵运算、统计分析和算法实现,是数据科学和AI领域的重要工具。
|
29天前
|
机器学习/深度学习 算法 Python
请解释Python中的支持向量机(SVM)以及如何使用Sklearn库实现它。
使用Python Scikit-learn实现支持向量机(SVM)涉及数据准备、选择模型(线性或非线性,搭配合适核函数)、训练、模型评估、参数调整和预测新数据。SVM通过最大化边界(margin)找到最优超平面,适用于分类和回归分析。
20 0
|
28天前
|
机器学习/深度学习 算法 数据挖掘
请解释Python中的决策树算法以及如何使用Sklearn库实现它。
决策树是监督学习算法,常用于分类和回归问题。Python的Sklearn库提供了决策树实现。以下是一步步创建决策树模型的简要步骤:导入所需库,加载数据集(如鸢尾花数据集),划分数据集为训练集和测试集,创建`DecisionTreeClassifier`,训练模型,预测测试集结果,最后通过`accuracy_score`评估模型性能。示例代码展示了这一过程。
|
29天前
|
JSON C语言 C++
【Python 基础教程 26】Python3标准库全面入门教程:一步步带你深入理解与应用
【Python 基础教程 26】Python3标准库全面入门教程:一步步带你深入理解与应用
60 1
|
2天前
|
机器学习/深度学习 算法 搜索推荐
SciPy线性代数库详解:矩阵运算与方程求解
【4月更文挑战第17天】SciPy的`scipy.linalg`模块提供丰富的线性代数功能,包括矩阵运算、线性方程组求解、特征值问题和奇异值分解等,基于BLAS和LAPACK库确保效率与稳定性。关键操作如矩阵乘法使用`dot`函数,转置和共轭转置用`transpose`和`conj`,求解线性方程组有`solve`和迭代方法,计算特征值和向量用`eig`,奇异值分解则依赖`svd`。这个库对科学计算、数据分析和机器学习等领域至关重要。