17.5 添加额外的文件

来源:互联网 发布:hec ras 软件下载 编辑:程序博客网 时间:2024/05/18 20:13

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

#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,不要缓存stdoutstderr输出,因为有时需要立即查看到输出的内容。

optimize

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

includes

列表包括的模块名称。

packages

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

ignores

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

excludes

那些模块不需要包括的。

dll_excludes

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

dist_dir

目标的目录名称。

typelibs

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

compressed

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

xref

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

bundle_files

绑定dllszip文件或者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

0 0
原创粉丝点击