文档章节

使用Enigma Virtual Box让Py2exe打包出的单文件更完美

炸酱面
 炸酱面
发布于 2012/03/23 13:50
字数 737
阅读 4770
收藏 14

     做为一个Python爱好者,我主要使用Python写一些小工具方便自己和同事工作。如何让我写的小工具简单的发布给别人使用就成了一个让人头痛的问题,因为大家都知道,Python脚本要打包成一个可执行程序是比较麻烦且有很多制约的。我最先尝试了PyInstaller,但是用它打包后得到的程序在第一次运行时,哪怕是一个非常简单的脚本,始终也要等上好几秒钟才会出现程序界面,这让我实在无法接受。我也尝试过cxfreeze,但是他不支持打包为单文件,且打包后的文件体积也是异常的大!最终我决定在没有转到Python3之前主要使用Py2exe打包脚本。

    使用Py2exe打包脚本为单文件的方法这里就不介绍了。我使用的是Python2.5 + Py2exe0.69,当我兴高采烈的把这个程序拷贝给我的同事使用时,却发现同事的XP电脑无法使用这个程序!查看生成的错误日志显示为:

    ImportError: MemoryLoadLibrary failed loading wx\_core_.pyd

    这是因为XP电脑没有安装VC++2005的运行库造成的。如果使用更高版本的Python,则缺少更高版本的VC++运行库。

    为此,我每次发布工具,只好将MSVCR71.DLL,MSVCP71.DLL一同拷贝给别人使用,有些时候还需要拷贝一些运行需要的附加资源,这让我感觉一个小工具不“小”了。直到我找到了Enigma Virtual Box这个软件虚拟化工具,他支持将多个附加文件和主执行程序打包为一个文件,且在运行后不会在硬盘内生成任何其他文件。Enigma Virtual Box的最新版本为4.3,这个软件更新的很快,建议大家使用最新版本,我之前出现了两次合并后无法运行的问题,通过升级新版本就解决了。软件截图如下:

 

    只需要指定一个主程序和附加的文件,再指定打包后新程序的存放位置,就可以进行打包了。默认情况下添加的附加文件的虚拟路径为主程序所在的路径。也支持设定附件到指定的虚拟路径。此外软件还支持虚拟注册表键值,支持将附件真正释放到磁盘。

    上图可见我将MSVCR71.DLL,MSVCP71.DLL以及一个Shell脚本和Py2exe打包后得到的单文件main.exe封包为一个新文件。这样我发布的小工具就很方便别人使用了。当然,如果你不使用Py2exe,而是使用cxfreeze,也可以用Enigma Virtual Box将生成的许多文件打包为一个单文件。

 

© 著作权归作者所有

炸酱面

炸酱面

粉丝 29
博文 10
码字总数 6815
作品 0
成都
个人站长
私信 提问
加载中

评论(1)

-亮子-
-亮子-
好,谢谢分享
qt生成的.exe文件与所需的dll文件打包后,运行内存变得很大?

使用qt 5.3 release生成的 *.exe文件与所需的dll文件使用Enigma Virtual Box_7.10工具打包后,运行内存(RAM)变得的很大了,在没有打包之前,把所需要的dll文件及目录与 .exe放在一起,更改了...

lx1234
2014/09/08
1K
7
Python打包工具

1 Python打包工具 目前在windows平台上将Python程序打包成exe文件主要有三个工具。 py2exe http://www.py2exe.org/ cx_freeze http://cx-freeze.sourceforge.net/ PyInstaller http://pytho......

Kinegratii
2016/04/26
1K
0
用cxfreeze打包Python3.3成exe文件

在python中比较常用的python转exe方法有三种,分别是cx_freeze,py2exe,PyInstaller。 py2exe是这三者里面知名度最高的,但稍微复杂一点的结构就无法完美的解决更不用提py3了 cx_freeze,本次...

liaojie
2014/03/18
6.6K
0
解决依赖.egg格式的库时py2exe打包失败的问题

今天用py2exe打包一个python文件时,总是打包失败。运行exe时提示xmltodict的ImportError,找不到xmltodict。 Traceback (most recent call last): File "leon.pyo", line 8, in <module>Imp......

l2m2
2014/05/18
1K
0
Python脚本打包为exe文件

把Python脚本和所用到的库打包为exe文件,可以更方便的发布程序,避免使用程序的每个电脑都必须安装Python。 网上有不少相关介绍,但很少见到Python 3.x下打包Python脚本为exe的成功案例,笔...

Yamazaki
2012/07/17
211
0

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
15
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
15
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部