转换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() ...
随机推荐
- Java设计模式(13)模板模式(Template模式)
Template模式定义:定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中. 其实Java的抽象类本来就是Template模式,因此使用很普遍.而且很容易理解和使用,我们直接以示例开始: pu ...
- 快速掌握Vue.js使用【转】
Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理解的API,使得我们能够快速地上手并使 ...
- Visual Studio的Debugger Visualizers
在英文网站上找到一份清单,列出了Visual Studio的Debugger Visualizers,觉得很好,记下来备注并分享: ASP, WEB:ASP.NET control graph vis ...
- qt 字体的相关问题
(一)qtconfig字体列表不全的问题? 发现界面的上的文字不能正常显示,后调用qtconfig发现里面识别的字体非常少,怀疑是编译的时候参数未能设置正确,于是经过多次试验,终于成功找到根结所在,. ...
- mysql小题趣事
题一 答案: case when +条件 +then 显示什么 +else+显示另外什么+end
- "android.uid.systemandroid.view.InflateException: Binary XML file line #7: Error inflating class android.webkit.WebView
在android源码中编译app通过,运行时出现错误: "android.uid.systemandroid.view.InflateException: Binary XML file l ...
- Linux操作_常用命令操作练习
1,新键一个用户,该用户名为自己姓名首字母缩写+学号最后2位组成(如王东,学号最后2位为18,则该用户名为wd18),为该用户设置密码,并将其加到users组:将该用户的相关信息更改(要求:Name为 ...
- Java数组列表反转
在Java中,如何反转数组列表中的元素? 以下示例使用Collections.reverse(ArrayList)方法反转数组列表中的元素. package com.yiibai; public cl ...
- TPshop标签
很多cms 中有很多 标签, 商品标签 文章标签 列表标签 几十个标签, 让开发者头疼, 难记, TPshop开发者考虑到这点, 用了一个万能标签, 开发者非常方便实用 TPshop万能标签只要 ...
- (转)LCD:LCD常用接口原理篇
关键词:android LCD TFT TTL(RGB) LVDS EDP MIPI TTL-LVDS TTL-EDP平台信息:内核:linux2.6/linux3.0系统:android/a ...