cx_Freeze

perl的跨平台性不是很好,特别是Win32::SerialPort不支持64位win7。sencld需要一个proxy来发送数据,所以最近转学python去了,为了方便其他人使用,需要封装python3代码为exe格式。py2exe只支持python2.x的,而cx_Freeze支持python2.x和python3.x,还能跨平台,并且分别有32位和64位的安装包。

cxfreeze项目地址:http://cx-freeze.sourceforge.net/

安装时候需要注意,如果Python不是按照默认路径安装,需要选择对路径,并且安装完之后,直接运行cx_Freeze会提示错误信息:“系统找不到指定的路径。”,cx_Freeze在Python安装目录下的script目录中,用记事本打开cxfreeze.bat可以发现,其中的python路径是错误的,需要手动修改为正确的路径。

使用方法一:

直接使用cxfreeze script进行封装

cxfreeze hello.py --target-dir dist

这是最简单的使用方法。
使用方法二:
使用distutils setup script进行封装,需要写一个python脚本,进行定制化封装。

import sys
from cx_Freeze import setup, Executable

# Dependencies are automatically detected, but it might need fine tuning.
build_exe_options = {"packages": ["os"], "excludes": ["tkinter"]}

# GUI applications require a different base on Windows (the default is for a
# console application).
base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup( name = "guifoo",
       version = "0.1",
       description = "My GUI application!",
       options = {"build_exe": build_exe_options},
       executables = [Executable("guifoo.py", base=base)])

脚本保存为setup.py,使用以下命令可以封装为exe文件,不过会是零散的文件。

python setup.py build

使用以下命令可以封装为msi安装文件,方便分发安装。

python setup.py bdist_msi

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.