zoukankan      html  css  js  c++  java
  • 转换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的机器上

  • 相关阅读:
    map内置函数、lambda表达式、快捷生成想要的列表、filter内置函数
    python生成随机验证码
    Redis数据库之概念与创建服务
    JavaScript中的类
    python之with的使用
    PHP变量名区分大小写,函数名不区分大小写
    php curl基本操作
    PHP生成随机字符串包括大小写字母
    PHP多例模式
    一个关于动态编译时 Evidence的问题
  • 原文地址:https://www.cnblogs.com/scios/p/8400261.html
Copyright © 2011-2022 走看看