转换python脚本为可执行程序的方式

背景:

部分工具使用python脚本编写,而目标服务器,没有安装python包,导致使用工具不方便,还需要另外安装python.

目前主要有2个主流软件,可做此类转换,把对应工具脚本转换为exe;

py2exe:缺点是和python 版本强相关,只能支持windows。

pyinstaller:绿色,解压即可用,2.6以上的版本,只要额外安装一下python32扩展即可,支持所有python版本; 支持所有主流操作系统(如生成linux下可执行程序)。

主要介绍下pyinstaller的使用

官方介绍: http://www.pyinstaller.org/export/v2.0/project/doc/Manual.html

下载绿色版解压: http://www.pyinstaller.org/

pywin32扩展:http://sourceforge.net/projects/pywin32/files/

转化成可执行程序的2种选择:

单个文件 -- 即脚本和所有资源文件一起压缩成一个exe (需要额外下载upx程序)

目录形式 -- 脚本和资源文件存在于一个目录或者目录树中

由于我这里需要暴露配置文件给工具使用者修改,所以采用第二种方式

以下为参考例子:

源脚本目录: D:automan.scanFilePwd

pyinstaller解压路径:F:softwaresoftwareworkpythonPyInstaller-2.1

1、执行如下命令 生成初步的exe工具

F:softwaresoftwareworkpythonPyInstaller-2.1>

python pyinstaller.py D:automan.scanFilePwdautoman.scanFilePwd.py

2、手工修改F:softwaresoftwareworkpythonPyInstaller-2.1automan.scanFilePwd下的automan.scanFilePwd.spec文件,执行需要增加的配置文件以及其他资源文件:

coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas+[('config.ini','D:\automan.scanFilePwd\config.ini','DATA'), ('Cpu.class','D:\automan.scanFilePwd\Cpu.class','DATA'),('keyfile.txt','D:\automan.scanFilePwd\keyfile.txt','DATA'),('readme.txt','D:\automan.scanFilePwd\readme.txt','DATA'), ('run.bat','D:\automan.scanFilePwd\run.bat','DATA'), ('whiltfile.txt','D:\automan.scanFilePwd\whiltfile.txt','DATA')],
               strip=None,
               upx=True,
               name='automan.scanFilePwd')

3、再次执行转换命令,引入spec文件,添加资源文件到目标目录

F:softwaresoftwareworkpythonPyInstaller-2.1>

python pyinstaller.py ./automan.scanFilePwd/automan.scanFilePwd.spec

完成:

F:softwaresoftwareworkpythonPyInstaller-2.1automan.scanFilePwddistautoman.scanFilePwd

最终这个目录下的所有内容,就是以automan.scanFilePwd.exe为核心的运行包;可以运行在没有安装python的机器上

原文地址:https://www.cnblogs.com/scios/p/8400261.html