IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]17.5 添加额外的文件

    caimouse发表于 2016-07-26 14:40:23
    love 0

    因为很多程序除了执行文件之外,还需要一些配置文件,数据文件,图片文件等等,所以需要把这些文件也自动地拷贝到指定有目录里,才可以在别人的电脑里运行起来,那么就需要在安装脚本里添加这些内容,并进行打包,如下:

    #python 3.4

    from distutils.core import setup

    import glob

    import py2exe

     

    setup(console=['hello.py'],

          data_files=[('icons',  ['CloseScreen.ico']),                  

                    ]

          )

    在这个安装脚本里,使用了关键字data_files,这个关键字使用一个元组表示一个目标目录和需要拷贝的文件,像上面的例子:

    ('icons',  ['CloseScreen.ico'])

    这个元组第一个元素icons是目标目录的名称,也就是在dist目录里建立的子目录,第二个元素是一个字典['CloseScreen.ico'],表示所有需要拷贝的文件路径,在字典里可以是多个文件。

    如果想建立多个目录,可以在data_files的字典里包括多元组即可,每一个元组是一个目录。如果想自动从一个目录里拷贝很多文件,一个一个地添加到脚本里,就比较麻烦,可以使用下面的脚本的方式,可以把一个目录里所有文件添加进去:

       1 import os

       2 from distutils.core import setup

       3 import py2exe

       4

       5 Mydata_files = []

       6 for files in os.listdir('C:/path/to/image/directory/'):

       7     f1 = 'C:/path/to/image/directory/' + files

       8     if os.path.isfile(f1): # skip directories

       9         f2 = 'images', [f1]

      10         Mydata_files.append(f2)

      11

      12 setup(

      13     console=['trypyglet.py.py'],

      14     data_files = Mydata_files,

      15     options={

      16                 "py2exe":{

      17                         "unbuffered": True,

      18                         "optimize": 2,

      19                         "excludes": ["email"]

      20                 }

      21         }

      22 )

    17.6 py2exe扩展的参数

    py2exe扩展原来一些参数,下面定义了一些参数告诉py2exe怎么样创建应用程序的类型,如下:

    关键字

    描述

    console

    把脚本转换为console应用程序。

    windows

    把脚本转换为GUI应用程序。

    service

    把脚本转换为Win32服务类型。

    con_server

    把脚本转换为COM服务类型。

    ctypes_com_server

    把脚本转换为COM服务类型。

    zipfile

    指定共享库的名称,默认是library.zip。

    options

    配置字典{‘py2exe’: {‘opt1’: val1, ‘opt2’: val2, ...}}

     

    在最后一项的py2exe选项参数如下列表:

    键

    可选的值

    unbuffered

    如果设置为true,不要缓存stdout和stderr输出,因为有时需要立即查看到输出的内容。

    optimize

    优化的级别,0表示不优化仅生成.pyc文件;1表示一般优化,相当于python -O;2表示极限优化,相当于python -OO。

    includes

    列表包括的模块名称。

    packages

    列表包括在subpackages目录的包模块。

    ignores

    那些模块如果没有发现,就可以忽略。

    excludes

    那些模块不需要包括的。

    dll_excludes

    所有需要执行的dll的名称。

    dist_dir

    目标的目录名称。

    typelibs

    列表需要包括编译生成的类型库。

    compressed

    是否创建一个zipfile压缩文件。

    xref

    是否创建一个模块的交叉引用。

    bundle_files

    绑定dlls到zip文件或者exe文件里,3表示不绑定,2绑定所有文件除了Python解释器,1绑定所有文件,包括Python解释器。

    skip_archive

    是否不要把Python字节码文件放到压缩包里,直接放到文件系统下。

    ascii

    是否自动包括编码模块。

    custom-boot-script

    设置建立运行环境之前运行的脚本文件。

    下面是一个使用参数的例子:

    setup(

            windows=['trypyglet.py'],

            options={

                    "py2exe":{

                            "unbuffered": True,

                            "optimize": 2,

                            "excludes": ["email"]

                    }

            }

    )

     

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

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

    示例如下:

    # mysetup.py

    from distutils.core import setup

    import py2exe

     

    setup(service=["MyService"])

    所建造的可执行的service是可以通过在其后跟一定的命令行参数标记来自行安装和卸载的。你可以通过在这个可执行的service(exe)后跟一-help参数来得到更多的帮助。

     

     

     蔡军生 QQ: 9073204  深圳

    1. 跟老菜鸟学python

    http://edu.csdn.net/course/detail/2592



沪ICP备19023445号-2号
友情链接