用python写的工具写好了,想打包然后发给测试同事使用,最后选择了PyInstaller,支持Windows、Linux、OS X,支持打包成一个文件夹或单个EXE文件。
 
我是直接在线安装的,在CMD输入:pip install pyinstaller
自动下载了PyInstaller-3.1.1.tar.gz和pypiwin32-219-cp27-none-win_amd64.whl并安装。
 
如果不行也可以去官网自己下载安装(http://www.pyinstaller.org/),不过应该要先安装pypiwin32。
 
安装后,把要打包的文件main.py(界面),b.py(逻辑,在main中调用),config.ini(配置文件)复制到F:\pkg
 
在CMD中进入F:\pkg,输入:pyinstaller main.py
然后就在F:\pkg生成build和dist文件夹和一个main.spec配置文件,dist下就是打包好的文件了,运行main.exe,一闪就没了,在CMD再次运行,报错是找不到ini文件,把ini复制到dist下,再次运行,可以了。
 
但是运行main.exe后,会多出一个CMD窗口。后面搜索后查找有一个参数-w, --windowed,
--noconsole
可以关闭控制窗口。
 
删除打包的文件,重新打包:pyinstaller -w --windowed --noconsole
main.py
将config.ini复制过去后再次运行,OK了,这次没有控制窗口了,不过程序在调用subprocess时,仍会闪现一下控制窗口,不过没关系了,这也算间接提示我命令运行了吧。但我的程序后来还遇到个问题,有个函数以此方法打包,会无法调用。
 
 
 
然后再想,打包不可能需要手动复制ini文件的,应该可以一起打包进去。
再次查询pyinstaller的官方wiki,发现可以编辑main.spec实现。类似这样
a = Analysis(...
   
 datas=[ ('src/README.txt', '.') ],
   
 ...
   
 )
只要修改datas元组就可以了。第一参数是文件目录,第二个参数是放在打包好的文件的目录,'.'就是首级目录了
 
修改后,再运行命令pyinstaller -w --windowed --noconsole main.spec
OK了,这次打包的时候直接就把config.ini打进去了,不过我怎么觉得还是我复制过去更方便呢。。。
 
 
 
以上打包都是打成一个文件夹,后来试了下打成单个EXE
命令:pyinstaller -F -w --windowed --noconsole main.py
然后同样把config.ini复制过去就OK了
 
 
 
然后我们可以加个图标。首先找个图片,然后去http://www.ico.la/转换一下格式,我选的128*128
将保存的图片ico.ico放到F:\pkg
输入命令:pyinstaller -F -w --windowed --noconsole -i ico.ico
main.py
 
 
参考:
官方WIKI:http://pythonhosted.org/PyInstaller/#using-spec-files
http://www.cnblogs.com/mywolrd/p/4756005.html
http://www.crifan.com/use_pyinstaller_to_package_python_to_single_executable_exe/
http://www.cnblogs.com/DxSoft/archive/2010/05/14/1735199.html
 

PyInstaller打包python脚本的更多相关文章

  1. PyInstaller打包python脚本的一些心得

    PyInstaller打包python脚本的一些心得 因为在公司经常要帮同事做一个从excel表格中提取出需要的内容的重复工作,比较繁琐还容易出错:于是就想着要写个程序,但是同事又不可能在电脑上也装上 ...

  2. PyInstaller打包Python脚本为exe

    1.PyInstaller-3.1.1  百度云链接  http://pan.baidu.com/s/1jHYWin8 密码  oapl 2.安装最新版本的 pywin32-217.win32-py2 ...

  3. 打包python脚本为exe可执行文件-pyinstaller和cx_freeze示例

    本文介绍使用cx_freeze和pyinstaller打包python脚本为exe文件 cx_freeze的使用实例 需要使用到的文件wxapp.py, read_file.py, setup.py ...

  4. 打包python脚本为exe的坎坷经历, by pyinstaller方法

    打包python脚本为exe的坎坷经历, by pyinstaller方法 又应验了那句歌词. 不经历风雨, 怎么见得了彩虹. 安装过程略去不提, 仅提示: pip install pyinstall ...

  5. PyInstaller 打包 python程序成exe

    pychaim下PyInstaller 打包 python程序 主题是使用PyInstaller 打包python时遇到一些问题以及解决方案,其中将要打包的程序是用tensorflow做的LSTM算法 ...

  6. “failed to excute script xxx” PyInstaller 打包python程序为exe文件过程错误

    在使用PyInstaller打包python程序,打包命令为: pyinstaller -F -w -i manage.ico yourpyfile.py 顺便说一下几个参数的作用 -F:是直接生成单 ...

  7. 利用pyinstaller将python脚本打包发布

    之前写了一个小工具,将excel配置表转换为json.xml.lua等配置文件.最近在学习egret,正好需要转换配置文件,刚好就用上了.然而当我想把工具拷到工作目录时,就发愁了.之前我为了方便扩展, ...

  8. PyInstaller把Python脚本打包成可执行程序教程

    一.说明 一直以来都有把.py文件打包成.exe文件的想法,但总是不够强烈,每次拖着拖着就淡忘了. 昨天帮硬件部门的同事写了个脚本,然后今天下午的时候,他问有没有办法把脚本打包成可执行文件,这样方便以 ...

  9. Pyinstaller打包Selenium脚本为exe文件执行问题

    由于同事辞职,许多运维工具的维护工作就交到我这里处理了,运维居然没人会Python脚本! 用Selenium编写的一个爬虫脚本cctv.py,需要给不懂软件的人运行.为了不让他去搭建,安装各种包,库, ...

随机推荐

  1. C#开发android应用实战 源码

    原书名: Professional Android Programming with Mono for Android and .NET/C#     Download Title Size Down ...

  2. JSP注释格式

    一.JSP注释格式来源 JSP是Sun Microsystems公司制定的一种服务器端动态网页技术的组件规范,其主体由HTML.CSS.JavaScript和Java拼凑组成. 正是因为JSP是一种组 ...

  3. SQL 语句实现行转列

    CREATE TABLE #tempcloum( [productNum] varchar() null, [year1] decimal not null, [year2] decimal not ...

  4. kubernetes发布解释型语言应用的最佳实践

    说明 k8s在发布编译型语言的应用时,几乎不用多考虑,就会选择将编译好jar/war包(java语言)或者二进制文件(golang/c++)直接打到镜像当中,生成新的应用镜像,然后将镜像推到镜像仓库, ...

  5. Graylog+elasticsearch+mongodb集群+nginx负载均衡前端

    网上有张图画的很好,搜索有关它的配置文章,google里有几篇英文的,都是依靠haproxy等或别的什么实现,没有纯粹的Graylog+elasticsearch+mongodb集群,项目需要,只有自 ...

  6. 创建1M-1T的虚拟磁盘(内存盘)——使用破解版 Primo Ramdisk Server Edition v5.6.0

    破解版 Primo Ramdisk Server Edition v5.6.0下载: https://pan.lanzou.com/i0sgcne 步骤: 下载并解压后安装“Primo.Ramdisk ...

  7. pat乙级1067

    1.用cin输入数据后,再用getline 输入,还是会输入cin已经输入的数据,即cin和getline互相独立. 2.题目中没有说尝试的密码不包含空格,因此不能用cin,而用getline. #i ...

  8. 如何在Java代码中使用SAP云平台CloudFoundry环境的环境变量

    本文使用的例子源代码在我的github上. 在我的公众号文章在SAP云平台的CloudFoundry环境下消费ABAP On-Premise OData服务介绍了如何通过Cloud Connector ...

  9. python_73_pickle序列化(接72)

    # json(为字符串形式)用于不同语言之间的数据交互,只适用于简单的数据交互,字典之类可以,函数就不行了,如下例 ''' import json def say(name):print('Hi!', ...

  10. CentOS6.5-DHCP配置

    原文链接主机配置: 1.查看主机名:hostname 2.修改主机名:vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=master.303kfy.n ...