前言

PathMerge是用python写的一个辅助文件夹合并的小工具,它的特点是不用担心合并后文件会丢失,旧文件会创建副本保存下来,除非你手动删除。

详情见:python开发目录合并小工具 PathMerge

由于PathMerge使用python写的,运行需要有python的环境,如果想把它转换成exe可执行文件怎么办呢?

我们可以用pyInstaller来将py文件转换成exe文件。

pyInstaller相对另一款py转exe的工具py2exe的优点在于,转换之后的exe文件无需任何支持文件,即使在没有python环境的机器上也能运行。

而py2exe转换成的exe文件需要库文件的支持,也就是说你需要把exe文件和一大堆库文件拷到一个目录下才能运行,使用起来不太方便。

使用pyInstaller唯一的缺点是转换出来的exe文件只能在英文目录下运行,中文目录下会报错。

很遗憾没有找到一款支持中文的转换工具。

pyInstaller使用

使用pyInstaller转换py文件其实很简单,在windows命令提示符中执行一条命令即可

python [PyInstaller Path] --console --onefile [PythonFile]

[PyInstaller Path] 为 pyinstaller.py 安装器的目录位置
[PythonFile] 为待转换py文件的名称

安装环境

1、PyInstaller-3.1.1.zip   

  下载地址:http://www.pyinstaller.org/

  最新版本可能已经更新

2、pywin32-220.win32-py2.7.exe

  下载地址:https://sourceforge.net/projects/pywin32/files/pywin32/Build%20220/

  访问windows系统API的库

3、python2.7.11

  下载地址:https://www.python.org/downloads/release/python-2711/

  默认安装

效果演示

先说明一下运行目录。

运行环境所需文件都已放在InstallPackage中

其中pyInstaller已经解压到当前文件夹,pywin32也已经安装好。

下面演示一下如何将PathMerge打包成exe文件。

我已经提前写好了转换脚本——py2exe.py,代码见下节。

三种运行方式:

1、双击运行py2exe,输入待转换文件名称

运行

2、将待转换文件拖到py2exe.py文件上,松手,直接运行

运行结果和上一种方式基本一样。

3、命令行调用。

运行结果和第一种方式一样,这种方式可用来写脚本。

脚本运行之后会在当前目录下生成一个与待转换文件同名的exe文件,见下图

exe文件运行效果和python程序是一样的。

代码

转换脚本在这里~ 作抛砖引玉用。

 # coding=gbk

 # py2exe
# 作者:freecode
# 创建时间:2016/5/11 10:54
# 作用:
# 将python脚本转换成windows下exe可执行文件
# 执行条件:
# 1、pyInstall已安装,安装目录在.\InstallPackage目录下
# 2、pywin32-220.win32-py2.7.exe已安装
# 3、所在目录必须为中文
# import os
import shutil
import sys class Py2Exe:
def py2exe(self,argv=None):
if argv==None:
FileName = raw_input('请输入待转换py文件名称(必须在当前目录下):').strip()
else:
FileName = argv[1].strip() if FileName[0]=='\"' or FileName[0]=='\'': # 去除引号
FileName = FileName[1:-1]
FileName = FileName.split('\\')[-1] # 截取文件名 # 生成exe文件
CurrentPath = os.getcwd()
PyInstaller = sys.path[0]+"\\InstallPackage\\PyInstaller-3.1.1\\pyinstaller.py" # 安装器位置
PyFile_1 = sys.path[0]+'\\'+FileName # 转换文件
SpecFile = CurrentPath+'\\'+FileName[:-3]+'.spec' # 要删除的spec文件
ExeFile_1 = "%s.exe"%(FileName[:-3]) # 生成的exe文件名
ExePath_1 = "%s\\dist\\%s"%(CurrentPath,ExeFile_1) # exe文件所在目录
CopyPath_1 = "%s\\%s"%(CurrentPath,ExeFile_1) # exe文件复制目录 if os.path.exists(sys.path[0]+'\\'+ExeFile_1):
print "%s已存在,不需要转换"%(ExeFile_1)
return False
else:
# 转换开始
os.system('python "%s" --console --onefile "%s"'%(PyInstaller,PyFile_1)) # 移动exe文件,删除多余文件 if os.path.exists(ExePath_1):
print 'exe生成完毕'
print '复制文件%s到%s……' % (ExePath_1,CopyPath_1)
shutil.copy(ExePath_1,CopyPath_1)
if argv != None:
print '复制文件%s到%s……' % (CopyPath_1,sys.path[0]+'\\'+ExeFile_1)
shutil.move(CopyPath_1,sys.path[0]+'\\'+ExeFile_1)
else:
print 'exe生成失败'
print '文件%s不存在'%(ExePath_1)
return False if os.path.exists(CurrentPath+"\\dist"):
print '删除目录%s……' % (CurrentPath+"\\dist")
shutil.rmtree(CurrentPath+"\\dist")
else:
print '目录%s不存在'%(CurrentPath+"\\dist")
return False if os.path.exists(CurrentPath+"\\build"):
print '删除目录%s……' % (CurrentPath+"\\build")
shutil.rmtree(CurrentPath+"\\build")
else:
print '目录%s不存在'%(CurrentPath+"\\build")
return False if os.path.exists(SpecFile):
print '删除文件%s……' % (SpecFile)
os.remove(SpecFile)
else:
print '文件%s不存在'%(SpecFile)
return False
return True if __name__=='__main__':
# 判断是否是在直接运行该.py文件
if len(sys.argv)==1:
Py2Exe().py2exe()
elif len(sys.argv)==2:
Py2Exe().py2exe(sys.argv)
else:
print 'ERROR:参数错误!\n'
raw_input('\n请按回车键(Enter)退出……')

注意

Sorry,目前仅支持windows环境……

原创声明

Freecode# : www.cnblogs.com/yym2013

使用pyInstaller发布PathMerge的exe版本(py转换成exe)的更多相关文章

  1. 【PyInstaller安装及使用】将py程序转换成exe可执行程序

    1  配置所需的环境 平台:windows7 64位,已经安装了python(x,y) 若未安装python环境,请自行安装python2.7或者其他版本,Python安装完成以后,需要将Python ...

  2. pyinstaller使用-python项目转换成exe可执行文件

    http://blog.csdn.net/pipisorry/article/details/50620122 Python不是每个人的计算机里面都有安装,当您写了一个好用的工具,需要一个standa ...

  3. 小白学习Python之路---py文件转换成exe可执行文件

    一.背景 今天闲着无事,写了一个小小的Python脚本程序,然后给同学炫耀的时候,发现每次都得拉着其他人过来看着自己的电脑屏幕,感觉不是很爽,然后我想着网上肯定有关于Python脚本转换成可执行文件的 ...

  4. 关于解决pyinstaller2.1将.py打包成exe文件在中文目录下不能执行的问题

    关于解决pyinstaller2.1将.py打包成exe文件在中文目录下不能执行的问题 这个问题困扰我好久了,今天终于非常偶然的在http://www.v2ex.com/t/113856#reply1 ...

  5. python源文件转换成exe问题解决贴

    项目上做一个小工具,通过webservice接口实现配置下发.python文件调试通过了,想把它抓换成exe,网上查了下,得知有py2exe这个好用精简的小工具,本以为分分钟搞定的事情,结果经历了九转 ...

  6. 将jar文件转换成exe可执行文件[转]

    将jar文件转换成exe可执行文件: exe文件使用方便,而且还可以提高源码及资源的安全性,但同时也失去了java的初衷--跨平台性. 如果你坚持要转换成exe文件,请按以下方式进行: 利用exe4j ...

  7. pyinstaller打包py文件成exe文件时,出现ImportError: No module named 'pefile'错误解决办法!

    首先pyinstaller的安装与使用详见如下链接: 安装完成之后,命令行中输入pyinstaller之后,结果如下: ImportError: No module named 'pefile' 缺少 ...

  8. python py文件转换成exe

    1.首先学会了最简单的方法 1)pip install pyinstaller  安装pyinstall 2)pyinstaller  aaaa.py 转换,会在当前目录下建两个文件夹,其中一个文件夹 ...

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

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

随机推荐

  1. postman 测试API - token

    1.使用全局变量保存token 2.再调用 参考文章 http://www.jianshu.com/p/13c8017bb5c8 https://testerhome.com/topics/6555

  2. cygwin 安装完后不能进入think问题,网上99%都是错误的

    正确的做法是首次进入的时候,显示的是哪个用户名就修改哪个用户名 比如我的电脑是 默认显示的是think 那么就去修改think 为 root 并把unused 后的2个数字改成0 然后在home下新建 ...

  3. iOS 动态化

    来自bang's blog http://blog.cnbang.net/tech/3286/ 问题 在开发模式上,web 的方式是比较先进的,有各种优点,包括跨平台/UI开发效率高,最重要的是可以时 ...

  4. 数据存储_FMDB

    一.简单说明 1.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API 2.FMDB的优点 使用起来更加面向对象,省去了很多麻烦.冗余的C ...

  5. iOS and JAVA 的 RSA 加密解密 (转载整理 )

    参考原文地址:http://www.cnblogs.com/makemelike/articles/3802518.html (至于RSA的基本原理,大家可以看 阮一峰的网络日志 的 RSA算法原理( ...

  6. STM32 复合设备编写

    目的 完成一个CDC + MSC的复合USB设备 可以方便在CDC,MSC,复合设备三者间切换 可移植性强 预备知识 cube中USB只有两个入口. main函数中的MX_USB_DEVICE_Ini ...

  7. 【bzoj1688】[USACO2005 Open]Disease Manangement 疾病管理

    题目描述 Alas! A set of D (1 <= D <= 15) diseases (numbered 1..D) is running through the farm. Far ...

  8. 动态令牌-(OTP,HOTP,TOTP)-基本原理

    名词解释和基本介绍 OTP 是 One-Time Password的简写,表示一次性密码. HOTP 是HMAC-based One-Time Password的简写,表示基于HMAC算法加密的一次性 ...

  9. C#RSA算法实现+如何将公钥为XML格式转为PEM格式,给object-C使用

    .net中,处于安全的考虑,RSACryptoServiceProvider类,解密时只有同时拥有公钥和私钥才可以.原因是公钥是公开的,会被多人持有.这样的数据传输是不安全的.C#RSA私钥加密,公钥 ...

  10. JS学习:第二周——NO.3盒子模型

    1.CSS盒子模型包括四个部分组成:设定的宽高+padding+border+margin: 2.JS盒子模型:通过系统提供的属性和方法,来获取当前元素的样式值   JS提供的属性和方法: clien ...