背景:

部分工具使用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:\software\software\work\python\PyInstaller-2.1

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

F:\software\software\work\python\PyInstaller-2.1>

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

2、手工修改F:\software\software\work\python\PyInstaller-2.1\automan.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:\software\software\work\python\PyInstaller-2.1>

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

完成:

F:\software\software\work\python\PyInstaller-2.1\automan.scanFilePwd\dist\automan.scanFilePwd

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

转换python脚本为可执行程序的方式的更多相关文章

  1. 使用py2exe转换python文件为可执行程序

    py2exe可以将python脚本转换成在Windows上的可独立执行.exe程序的工具.可以让Python脚本在没有安装python工具的Windows系统上运行,方便脚本共享. 操作环境 pyth ...

  2. Java运行Python脚本的几种方式

    由于在项目需要执行Python,找寻相关资料,总结出以下几种方式: 直接执行Python脚本代码 引用 org.python包 PythonInterpreter interpreter = new ...

  3. 使用py2exe将python脚本转换成exe可执行文件

    Python(wiki en  chs)是一门弱类型解释型脚本语言,拥有动态类型系统和垃圾回收功能,支持多种编程范式:面向对象.命令式.函数式和过程式编程. 由于Python拥有一个巨大而广泛的标准库 ...

  4. java 调用 python 脚本

    有时候在java项目里,需要执行Python脚本以下几种方式: 1.直接执行Python脚本代码 引用 org.python包 创建一个 python解释器,貌似这种方式不可以导入第三方库,模块... ...

  5. 通过Java调用Python脚本

    在进行开发的过程中,偶尔会遇到需要使用Java调用Python脚本的时候,毕竟Python在诸如爬虫,以及科学计算等方面具有天然的优势.最近在工作中遇到需要在Java程序中调用已经写好的Python程 ...

  6. python 全栈开发,Day94(Promise,箭头函数,Django REST framework,生成json数据三种方式,serializers,Postman使用,外部python脚本调用django)

    昨日内容回顾 1. 内容回顾 1. VueX VueX分三部分 1. state 2. mutations 3. actions 存放数据 修改数据的唯一方式 异步操作 修改state中数据的步骤: ...

  7. 命令行运行Python脚本时传入参数的三种方式

    原文链接:命令行运行Python脚本时传入参数的三种方式(原文的几处错误在此已纠正) 如果在运行python脚本时需要传入一些参数,例如gpus与batch_size,可以使用如下三种方式. pyth ...

  8. 编写Python脚本把sqlAlchemy对象转换成dict的教程

    编写Python脚本把sqlAlchemy对象转换成dict的教程 在用sqlAlchemy写web应用的时候,经常会用json进行通信,跟json最接近的对象就是dict,有时候操作dict也会比操 ...

  9. Python输出内容的三种方式:print输出 python脚本执行 linux直接执行

    1.  在linux中安装python后,在linux命令行中输入python即可切换到Python命令行下 退出python命令行的命令: 老版本:ctrl+D 新版本:quit();或exit() ...

随机推荐

  1. Spring Cloud / Spring Boot There was an unexpected error (type=Unauthorized, status=401). Full authentication is required to access this resource.

    访问EndPoint时会出现没有权限   There was an unexpected error (type=Unauthorized, status=401). Full authenticat ...

  2. Java设计模式(7)装饰模式(Decorator模式)

    Decorator常被翻译成"装饰",我觉得翻译成"油漆工"更形象点,油漆工(decorator)是用来刷油漆的,那么被刷油漆的对象我们称decoratee.这 ...

  3. vnc server on Ubuntu

    Virtual Network Computing(VNC)是进行远程桌面控制的一个软件.客户端的键盘输入和鼠标操作通过网络传输到远程服务器,控制服务器的操作   (只有背景,没有菜单栏问题没有解决) ...

  4. 关于Unity中红外线瞄准的效果实现

    今天做一个FPS游戏的时候,由于我做的是第三人称的射击,所以需要一个枪的红外线瞄准的效果. 一开始我在枪上挂一个很细很长的聚光灯,瞄准远处物体的时候,看起来有点红外线的样子,但是靠近之后光线就变成一个 ...

  5. 基于jquery的ui选择之路

    选定: 主框架:jqueryUi tree:ztree grid:jqGrid layout:jquery.layout 原由: 还有其他demo,ajax实现等参看连接: 正在做的一个项目选择jqu ...

  6. RAP接口管理系统import进eclipse进行二次开发

    接口管理工具用了RAP,又是巴巴队伍的东西,开源的,需要进行二次开发方可被使用. 前几个月的时候鼓捣了一阵子,下来一片红,然后就没管它了.最近又捡起.直接git导入项目即可. 安装git插件,网上很多 ...

  7. 2015年第六届蓝桥杯C/C++B组省赛题目解析

    一.奖券数目 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利.虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位数(10000-99999),要求其中 ...

  8. Spring JDBC NamedParameterJdbcTemplate类示例

    org.springframework.jdbc.core.NamedParameterJdbcTemplate类是一个具有基本JDBC操作的模板类,允许使用命名参数而不是传统的’?‘占位符. 这个类 ...

  9. ORACLE 几个我忍了他很多年的问题

    ① DataGuard环境,主库创建的临时文件,不在备库上创建 ② 创建11G R2 Rac环境时,在RHEL 6.0及以后版本上,最后执行root.sh命令时,以及重新启动OS后启动ohasd,都需 ...

  10. Excel破解密码代码

    Option ExplicitPublic Sub AllInternalPasswords()' Breaks worksheet and workbook structure passwords. ...