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