Python 打包说明

使用cxfreeze打包Python程序时,推荐通过setup.py进行操作。打包的程序应为模块+单个文件结构,避免导入错误。打包后,依赖模块位于lib文件夹,相对路径可能导致运行错误;配置文件应单独处理;依赖库以pyc格式存储,若找不到库,需检查lib或系统库。cxfreeze会复制所有导入的包到lib,可根据需要删除不必要依赖。

cxfreeze打包过程中最好通过setup.py来进行打包,打包的python程序需由模块+单个文件方式进行组织,否则会出现导入错误(ImportError),打包的setup.py配置如下:

# coding=utf-8

from cx_Freeze import setup, Executable
# python setup.py build

includefiles = ['README.md', 'event.ini'];;配置文件不用打包,相对路径
includes = []
excludes = []
packages = ['openpyxl', 'aiohttp', 'xlrd']


setup(name = "simple" ,
      version = "0.1" ,
      description = "A event export" ,
      author = "wyt",
      author_email = "test@qq.com",
      options = {'build_exe': {'includes' :includes, 'excludes': excludes, 'packages' : packages, 'include_files': includefiles}},
      executables = [Executable("main.py")]
)

通过python setup.py build来生成打包文件夹build。注意实现如下:
1.  打包后依赖的模块在lib文件夹下,如模块中涉及相对路径的引用,运行起来肯定会报错,建议不要使用相对路径访问文件。
2. 所有配置项放在python标准配置文件ini中,在打包时单独跳过该文件。
3. 依赖库均以pyc文件格式存放在库文件夹中,如出现找不到库的错误,则在对应的库中查找该文件是否存在。如以下错误:
  File "C:\Python36\lib\asyncio\coroutines.py", line 13, in <module>
    from . import events
ImportError: cannot import name 'events'
我们就去检查lib下asyncio中是否存在events.pyc文件,如果不存在就去系统库中拷贝过来。
4.  cxfreeze打包会将该目录下所有python文件导入的包复制到lib文件夹下,我们可根据系统运行情况选择性的删除一些依赖库。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值