转换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:\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脚本为可执行程序的方式的更多相关文章
- 使用py2exe转换python文件为可执行程序
py2exe可以将python脚本转换成在Windows上的可独立执行.exe程序的工具.可以让Python脚本在没有安装python工具的Windows系统上运行,方便脚本共享. 操作环境 pyth ...
- Java运行Python脚本的几种方式
由于在项目需要执行Python,找寻相关资料,总结出以下几种方式: 直接执行Python脚本代码 引用 org.python包 PythonInterpreter interpreter = new ...
- 使用py2exe将python脚本转换成exe可执行文件
Python(wiki en chs)是一门弱类型解释型脚本语言,拥有动态类型系统和垃圾回收功能,支持多种编程范式:面向对象.命令式.函数式和过程式编程. 由于Python拥有一个巨大而广泛的标准库 ...
- java 调用 python 脚本
有时候在java项目里,需要执行Python脚本以下几种方式: 1.直接执行Python脚本代码 引用 org.python包 创建一个 python解释器,貌似这种方式不可以导入第三方库,模块... ...
- 通过Java调用Python脚本
在进行开发的过程中,偶尔会遇到需要使用Java调用Python脚本的时候,毕竟Python在诸如爬虫,以及科学计算等方面具有天然的优势.最近在工作中遇到需要在Java程序中调用已经写好的Python程 ...
- python 全栈开发,Day94(Promise,箭头函数,Django REST framework,生成json数据三种方式,serializers,Postman使用,外部python脚本调用django)
昨日内容回顾 1. 内容回顾 1. VueX VueX分三部分 1. state 2. mutations 3. actions 存放数据 修改数据的唯一方式 异步操作 修改state中数据的步骤: ...
- 命令行运行Python脚本时传入参数的三种方式
原文链接:命令行运行Python脚本时传入参数的三种方式(原文的几处错误在此已纠正) 如果在运行python脚本时需要传入一些参数,例如gpus与batch_size,可以使用如下三种方式. pyth ...
- 编写Python脚本把sqlAlchemy对象转换成dict的教程
编写Python脚本把sqlAlchemy对象转换成dict的教程 在用sqlAlchemy写web应用的时候,经常会用json进行通信,跟json最接近的对象就是dict,有时候操作dict也会比操 ...
- Python输出内容的三种方式:print输出 python脚本执行 linux直接执行
1. 在linux中安装python后,在linux命令行中输入python即可切换到Python命令行下 退出python命令行的命令: 老版本:ctrl+D 新版本:quit();或exit() ...
随机推荐
- Spring Cloud Eureka 服务关闭但是未从注册中心删除 自我保护机制
自我保护背景 首先对Eureka注册中心需要了解的是Eureka各个节点都是平等的,没有ZK中角色的概念, 即使N-1个节点挂掉也不会影响其他节点的正常运行. 默认情况下,如果Eureka Serve ...
- Nagios系列1,选择
Zabbix和Nagios哪个更好 zabbix: 1.分布式监控,适合于构建分布式监控系统,具有node,proxy 2种分布式模式 2.自动化功能,自动发现,自动注册主机,自动添加模板,自动添加分 ...
- 损失函数Center Loss 代码解析
center loss来自ECCV2016的一篇论文:A Discriminative Feature Learning Approach for Deep Face Recognition. 论文链 ...
- Rethinking the inception architecture for computer vision的 paper 相关知识
这一篇论文很不错,也很有价值;它重新思考了googLeNet的网络结构--Inception architecture,在此基础上提出了新的改进方法; 文章的一个主导目的就是:充分有效地利用compu ...
- (弃)解读Openstack Identity API v2.0
目前OpenStack社区提供了详尽的API文档,并配有丰富的说明和示例,关于Identity API v2查看这里, 关于Identity API v3请查看这里. 尽管现在官方已经不建议OpenS ...
- SecureCRT同时发送命令到所有主机
有时候我们需要在多台服务器上执行相同的命令,比如安装软件,复制,粘贴,删除等等,但一台一台的去操作工作量就太大了,我们可以借助SecureCRT这款客户端远程连接工具实现这样的要求! 相关阅读: 如何 ...
- Java多线程——线程范围内共享变量和ThreadLocal
多个线程访问共享对象和数据的方式 1.如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如,买票系统就可以这么做. package java_ ...
- JNDI 在 J2EE 中的角色
JNDI 在 J2EE 中的角色 Spring整合HIbernate时,三种数据库连接池的配置和比较 Tomcat 6 JNDI数据源详解 Tomcat 6 --- JNDI详解 Spring整合HI ...
- 浅谈Linux系统中如何查看进程
进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源.一般来说,Linux系统会在进程之间共享程序代码和系统函数库,所以在任何时刻内存中都只有代码的一份拷贝. 1,ps命令 作用:p ...
- 【python】命令行输出颜色
http://www.cnblogs.com/chjbbs/p/5706513.html