转换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() ...
随机推荐
- tf变换(1)
TF库的目的是实现系统中任一个点在所有坐标系之间的坐标变换,也就是说,只要给定一个坐标系下的一个点的坐标,就能获得这个点在其他坐标系的坐标. 使用tf功能包,a. 监听tf变换: 接收并缓存系统中发布 ...
- R-table和tapply函数
table可统计数据的频数 tapply可根据因子.向量和要计算的函数计算 > class<-c(1,2,3,2,1,2,1,3) > class[1] 1 2 3 > c(8 ...
- 【转】IT族室内锻炼身体的小妙招
上班族.久坐族近年的健康状况令人堪忧,由于缺乏运动加上长期面对辐射,使上班族身体状况越来越差.专家建议上班族应多加运动,只需小小的动作就能轻松获得健康! 梳头:用木梳从前额至头顶部向后部梳刷,逐渐加快 ...
- Linux系统查看系统是32位还是64位方法总结 in 创新实训
这篇博客是总结.归纳查看Linux系统是32位还是64位的一些方法,很多内容来自网上网友的博客.本篇只是整理.梳理这方面的知识,方便自己忘记的时候随时查看. 方法1:getconf LONG_BIT ...
- android 获取配置文件 相对路径
--src --com.example.Demo1 --IndexActivity.class --test.txt 在IndexActivity.class 获取test.txt中的文件 ...
- 关于Unity中Vector2和Vector3的使用
Vector2是用来定义和描述2D游戏内部的一些参数,像刚体的速度等等 Vector3是 1.鼠标点击屏幕后要转化为3D坐标的时候用到的定义和描述 2.两个物体之间的相对距离,或者说偏移量的变量类型
- jQuery AJAX中文乱码处理
最近工作中用jQuery ajax返回出现乱码,用的Notepad++编辑器,当JS部分传递中文时,另一页面接收的话会出现乱码,在网上找了很多方法,基本上没有很好的解决. 页面用GB2312编码,JS ...
- e835. 使JTabbedPane中的卡片生效和失效
By default, all new tabs are enabled, which means the user can select them. A tab can be disabled to ...
- 使用Camera功能 AREA的理解
转至 http://blog.csdn.net/think_soft/article/details/7998478 使用Camera功能 大多数的Camera功能都是使用Camera.Paramet ...
- (实用)Linux下Eclipse安装配置PyDev
记录备忘. PyDev是Eclipse下支持Python开发的IDE插件,本文介绍安装和配置PyDev插件的过程. 一.安装PyDev插件两种安装方法: 1.在eclipse的Help->Ins ...