cxfreeze 用于将python3源码封装成windows下可执行的exe文件

注意:

  1. 64位的python封装出适用于64位系统的exe,如果想封装出32位的,需要安装32位的python
  2. 必须在windows下封装,linux上不能封装成win的可执行程序
  3. 封装主程序即可,会自动处理依赖关系的
  4. 文件名不要太奇葩,会跪

方法一:利用命令行

  • 优点:简单粗暴,方便快捷常用,
  • 缺点:不太适用于复杂的项目

简单使用

假设已经安装和配置好。
首先,打开cmd
开始---运行---cmd为了方便,切换到源代码的文件夹,注意要换一个盘不能直接cd,要先d:切换盘之后才可以继续

接下来就是一句话,第一个路径是源文件的(假设现在在源文件的目录),第二个路径是封装后的exe输出的路径(最好完整路径)。
cxfreeze xxx.py --target-dir d:\dist\
如果一开始没有切路径,就补上源文件的完整路径。
cxfreeze d:\source\xxx.py --target-dir d:\dist\

加上图标

注意图标的格式必须是.ico。加上一个参数--icon=d:\xxxx.ico

比如cxfreeze xxx.py --target-dir=d:\dist\ --icon=d:\xxxx.ico

方法二:编写setup.py

如果方法一跪了的话。。。。用到的时候一般是有些扩展库没有自动封装

  • 优点:手动挡。酷炫!完整掌控!
  • 缺点:手动挡,小麻烦。

cxfreeze-quickstart

切到源代码目录,在cmd下
cxfreeze-quickstart
接着按他给的提示走,最后会生成一个setup.py文件

内容大概是这样

from cx_Freeze import setup, Executable

# Dependencies are automatically detected, but it might need
# fine tuning.
buildOptions = dict(packages = [], excludes = [])

base = 'Console'

executables = [
    Executable('test.py', base=base)
]

setup(name='test_project',
      version = '1.0',
      description = 'test for cxfreeze',
      options = dict(build_exe = buildOptions),
      executables = executables)

举个栗子,我的程序依赖的lxml库没有封装进去,这个时候我就需要在packages = []中加上packages = ["lxml"],注意,不需要吧所有的库都手动加进去,只用加自动解析不了的库。

顺便说一下base可以设置的值:

  • Console windows Console application,默认值。
  • Win32Gui 如果图形化的话才选

封装!

现在有了setup.py 后,在命令行
python setup.py build
即可

另外说一下封装成安装包

python setup.py bdist_msi

更复杂的使用

编写setup.py 还可以应对更复杂的程序的封装。请参考官方文档。

参考

官方文档

Logo

更多推荐