zoukankan      html  css  js  c++  java
  • 使用py2exe打包exe

    安装

    py2exe已经支持到python 3.8了,而且用pip可以直接安装对应版本,很方便。
    pip install p2p2exe

    使用

    简单使用

    1、比如,代码文件为pytest.py

    # -*- coding: utf-8 -*-
    
    import os
    import time
    print(r"test------------>project home is %s" % os.getcwd())
    time.sleep(30)
    

    2、再同级目录创建一个setup.py
    这个文件告诉py2exe怎么打包,打包哪个文件。pytest.py就是我们要打包的文件

    # -*- coding: utf-8 -*-
    from distutils.core import setup
    import py2exe
    
    #图形界面
    #setup(windows=['pytest.py'])
    #带cmd窗口
    setup(console=['pytest.py'])
    

    3、cmd到要打包的代码文件目录,需要先设定python的环境变量。
    python setup.py py2exe


    4、查看exe
    在代码同级目录中会生成一个dist目录,该目录中的文件包含了你的程序所必须的东西,发布时候要将整个目录一起发布。
    目录内容包括:
    1、一个或多个exe文件。
    2、python##.dll。
    3、几个.pyd文件,它们是已编译的扩展名,它们是exe文件所需要的;加上其它的.dll文件,这些.dll是.pyd所需要的。
    4、一个library.zip文件,它包含了已编译的纯的python模块如.pyc或.pyo

    我想使用的时候应该是创建个快捷方式吧,这块不比pyinstaller,直接是一个exe文件。py2exe需要设置setup文件来实现。

    高级应用

    1、带ico、只生成一个exe

    # -*- coding: utf-8 -*-
    from distutils.core import setup
    import py2exe
    
    '''
    compressed #压缩
    bundle_files #所有文件打包成一个exe文件
    '''
    options = {"py2exe":{"compressed":1,"optimize":2,"bundle_files":1}}
    
    '''
    version #版本号
    description #类似于打开任务管理器后,后边的进程描述。这里自己可以定义自己的名称
    name #作者
    options #将所有文件打包成一个exe,如果无此代码则会在dist文件夹内生成许多依赖的文件,加上此代码则会把依赖文件都加入一个exe,发给他人使用时不
    script、icon_resources #前一个参数都好理解是你的python文件名,后一个参数就是图标所依赖的资源文件,只需要给出合理的ico图标路径
    '''
    setup(
        version='5.0',
        description='uploadtool',
        name='zhaobw',
        options=options,
        zipfile=None,
        windows=[{'script':'pytest.py','icon_resources':[(1,r'E:pycharm-project	estfavicon.ico')]}]
    )
    

    2、指定额外的文件
    一些应用程序在运行时需要额外的文件,诸如配置文件、字体、位图。

    如果在安装脚本中用data_files可选项指定了那些额外的文件,那么py2exe能将这些文件拷贝到dist子目录中。data_files应包含一个元组(target-dir, files)列表,其中的files是这些额外的文件的列表。

    #setup.py
    
    from distutils.core import setup
    import glob
    import py2exe
    
    setup(console=["myscript.py"],
    data_files=[("bitmaps",
    ["bm/large.gif", "bm/small.gif"]),
    ("fonts",
    glob.glob("fonts\*.fnt"))],
    )
    

    说明:data_files选项将创建一个子目录distitmaps,其中包含两个.gif文件;一个子目录distfonts,其中包含了所有的.fnt文件。

    3、Windows NT services
    你可以通过传递一个service关键字参数给setup函数来建造Windows NT services

    ,这个service参数的值必须是一个Python模块名(包含一service类)的列表。

    示例如下:

    # setup.py
    from distutils.core import setup
    import py2exe
    
    setup(service=["MyService"])
    

    所建造的可执行的service是可以通过在其后跟一定的命令行参数标记来自行安装和卸载的。你可以通过在这个可执行的service(exe)后跟一-help参数来得到更多的帮助。
    4、COM servers
    你可以通过传递一个com_server 关键字参数给setup函数来建造Windows NT services ,这个service参数的值必须是一个Python模块名(包含一个或多个COM server 类)的列表。

    示例如下:

    # mysetup.py
    
    from distutils.core import setup
    import py2exe
    
    setup(com_server=["win32com.server.interp"])
    

    默认情况下,DLL和EXE servers被建造,你不需要它们的话你可以简单的删除它们。

  • 相关阅读:
    JS语言中的JSON.parse()和JSON.stringify()
    Django中 @login_required用法简介
    Django model中的save后的return
    windows下gethostbyname 调用失败
    学习打造自己的DEBUG_NEW
    关于new/delete、malloc/free的内存泄漏检测
    C++连接mysql的两种方式(ADO连接和mysql api连接)
    windows下Redis编译安装
    mysql之字符编码问题
    mysql错误用法insert into where
  • 原文地址:https://www.cnblogs.com/zhaobowen/p/14198770.html
Copyright © 2011-2022 走看看