zoukankan      html  css  js  c++  java
  • python 转 exe -- py2exe库实录

    本文基于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:Python34Libsite-packagesPyQt5libEGL.dll"]), ("platforms", [r"C:Python34Libsite-packagesPyQt5pluginsplatformsqwindows.dll"])], zipfile = None, options = {'py2exe': py2exe_options} )

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

    ①:"includes": ["sip"]
    ②:data_files=[("",
                [r"C:Python34Libsite-packagesPyQt5libEGL.dll"]),
                ("platforms",
                [r"C:Python34Libsite-packagesPyQt5pluginsplatformsqwindows.dll"])]


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

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

    双击运行,出现窗口

  • 相关阅读:
    深入理解Linux系统调用:write/writev
    MySQL基础语法
    Ubuntu20.04安装MySQL8.0
    关系数据库(事务:一致性+隔离级别)
    基于mykernel 2.0编写一个操作系统内核
    信息安全 学习笔记(1)——常用攻击、网络命令、ARP安全、IP安全
    AI画风迁移——Style Change
    百度算法题回忆
    Java机试--输入输出
    【竞赛项目】阿里天池数据挖掘比赛——快来一起挖掘幸福感
  • 原文地址:https://www.cnblogs.com/hhh5460/p/5388204.html
Copyright © 2011-2022 走看看