打包python程序_py2exe打包python程序
一、简介
py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序。
py2exe已经被用于创建wxPython,Tkinter,Pmw,PyGTK,pygame,win32com client和server,和其它的独立程序。py2exe是发布在开源许可证下的。
二、安装py2exe
从http://prdownloads.sourceforge.net/py2exe下载并运行与你所安装的Python对应的py2exe版本的installer,这将安装py2exe和相应的例子;这些例子被安装在lib\site-packages\py2exe\samples目录下。
三、py2exe的用法
如果你有一个名为helloworld.py的python脚本,你想把它转换为运行在windows上的可执行程序,并运行在没有安装python的windows系统上,那么首先你应写一个用于发布程序的设置脚本例如mysetup.py,在其中的setup函数前插入语句import py2exe 。
mysetup.py示例如下:
# mysetup.py
from distutils.core import setup
import py2exe
setup(console=["helloworld.py"])
然后按下面的方法运行mysetup.py:
python mysetup.py py2exe
上面的命令执行后将产生一个名为dist的子目录,其中包含了helloworld.exe,python24.dll,library.zip这些文件。
如果你的helloworld.py脚本中用了已编译的C扩展模块,那么这些模块也会被拷贝在个子目录中,同样,所有的dll文件在运行时都是需要的,除了系统的dll文件。
dist子目录中的文件包含了你的程序所必须的东西,你应将这个子目录中的所有内容一起发布。
默认情况下,py2exe在目录dist下创建以下这些必须的文件:
1、一个或多个exe文件。
2、python##.dll。
3、几个.pyd文件,它们是已编译的扩展名,它们是exe文件所需要的;加上其它的.dll文件,这些.dll是.pyd所需要的。
4、一个library.zip文件,它包含了已编译的纯的python模块如.pyc或.pyo
上面的mysetup.py创建了一个控制台的helloword.exe程序,如果你要创建一个图形用户界的程序,那么你只需要将mysetup.py中的console=["helloworld.py"]替换为windows=["myscript.py"]既可。
py2exe一次能够创建多个exe文件,你需要将这些脚本文件的列表传递给console或windows的关键字参数。如果你有几个相关联的脚本,那么这是很有用的。
运行下面个命令,将显示py2exe命令的所有命令行标记。
python mysetup.py py2exe --help
注意:setup(console=["helloworld.py"])打包出来的exe运行时带有DOS命令窗口的,如果要去除该窗口,将console替换为windows即可
四、指定额外的文件
一些应用程序在运行时需要额外的文件,诸如配置文件、字体、位图。
如果在安装脚本中用data_files可选项指定了那些额外的文件,那么py2exe能将这些文件拷贝到dist子目录中。data_files应包含一个元组(target-dir, files)列表,其中的files是这些额外的文件的列表。
示例如下:
# mysetup.py
from distutils.core import setup
import glob
import py2exe
setup(console=["helloworld.py"],
data_files=[("bitmaps",
["bm/large.gif", "bm/small.gif"]),
("fonts",
glob.glob("fonts\\*.fnt"))],
)
说明:data_files选项将创建一个子目录dist\bitmaps,其中包含两个.gif文件;一个子目录dist\fonts,其中包含了所有的.fnt文件。
五、Windows NT services
你可以通过传递一个service关键字参数给setup函数来建造Windows NT services
,这个service参数的值必须是一个Python模块名(包含一service类)的列表。
示例如下:
# mysetup.py
from distutils.core import setup
import py2exe
setup(service=["MyService"])
所建造的可执行的service是可以通过在其后跟一定的命令行参数标记来自行安装和卸载的。你可以通过在这个可执行的service(exe)后跟一-help参数来得到更多的帮助。
六、COM servers
你可以通过传递一个com_server 关键字参数给setup函数来建造Windows NT services
,这个service参数的值必须是一个Python模块名(包含一个或多个COM server 类)的列表。
示例如下:
# mysetup.py
from distutils.core import setup
import py2exe
setup(com_server=["win32com.server.interp"])
默认情况下,DLL和EXE servers被建造,你不需要它们的话你可以简单的删除它们。
当我兴高采烈的把打包程序拷贝给我的同事使用时,却发现同事的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将生成的许多文件打包为一个单文件。
打包python程序_py2exe打包python程序相关推荐
- pyinstaller打包生成的exe文件并使用python终止后台的exe程序运行
pyinstaller打包生成的exe文件并使用python终止后台的exe程序运行 目录 pyinstaller打包生成的exe文件并使用python终止后台的exe程序运行 #pyinstalle ...
- python压缩包怎么安装-Python学习笔记-打包发布Python模块或程序,安装包
Python模块.扩展和应用程序可以按以下几种形式进行打包和发布: python setup.py获取帮助的方式 python setup.py --help python setup.py --he ...
- python安装pyqt5 qml_PyQt5:PyQt5程序打包2
LEARN MORE 正文 今天我们用计算器的例子打包一下这个应用程序(Windows7系统下). 1 简单的打包pyinstaller calculator.py 在屏幕上出现大量的INFO信息后, ...
- Py之cx_Freeze:Python库之cx_Freeze库(程序打包)简介、安装、使用方法详细攻略—案例之实现机器人在线24小时智能翻译
Py之cx_Freeze:Python库之cx_Freeze库(程序打包)简介.安装.使用方法详细攻略-案例之实现机器人在线24小时智能翻译 导读 将Python程序生成exe程序目前流行这 ...
- pyqt5能直接编译python吗_用PyInstaller打包用PyQt5编写的python程序
0.背景 本弱初学PyQt5,写了一个GUI小程序,但在用PyInstaller打包时出现了不少问题,现将几个比较大的问题记录如下,希望以后能记住. 1. 资源打包 首先是资源打包的问题,我写的程序引 ...
- vs python生成exe文件_使用VScode编写python程序并打包成.exe文件-文件夹变成exe
1. 下载vscode并安装 2. 配置Python环境 点击左下角的吃了图标,在弹出的菜单中选择extensions,在左上方搜索框内输入"Python",可以看到好多Pytho ...
- python 程序打包 vscode_使用VScode编写python程序并打包成.exe文件
听说Visual Studio Code(VS Code)的诸多好处,了解了一下果真很喜欢,我喜欢它的缘由主要有3个,一是VS Code开源且跨平台,二是由于其界面很是酷,三是能够知足个人大所属代码需 ...
- python 用cx_Freeze打包程序详细解读setup.py
最近在学习用python开发深度学习工具,发现使用cx_Freeze对程序进行打包时,采用构建setup.py的时候出现很多不清楚的地方,现在详细说明setup.py文件的内容 os.environ[ ...
- python打包xp系统_python打包的exe为啥在XP上提示“不是有效的WIN32程序”
求助超能力者.电脑是WIN7 64位的 python的版本是3.4.4 我还专门找了32位版. 打包工具是pyinstaller 打包出来的EXE 在win7上都能跑,就是放到XP上会提示" ...
最新文章
- Windows7无法自动将IP协议堆栈绑定到网络适配器的办法
- push and pop
- libuv 中文编程指南(零)前言
- matlab 排列 拆分,在matlab中将列表拆分为多个变量
- 【转载】尝试使用GraphicsMagick的缩略图功能
- android 撑满剩余空间,怎么让LinearLayout占据父布局的所有剩余空间
- 未捕获的异常 'NSInternalInconsistencyException'
- java 正则匹配括号是否成对_十分钟学会正则表达式
- 学习C#面向对象设计模式纵横谈---笔记
- Mysql学习总结(79)——MySQL常用函数总结
- WeCode在线少儿编程|为什么我们选择代码编程
- python如何生成app_python创建app
- uefi启动服务器系统安装win7系统教程,uefi引导gpt安装win7教程
- 棋牌漏洞游戏反汇编译破解修改透视案例分析
- 记录一次Java笔试题记录一次Java笔试题
- CentOS7创建组删除组创建用户删除用户
- 灵活运用CSS开发技巧
- 32位超前进位加法器
- 软件测试常问100道面试题(含答案以及案例解析),全网最全最新
- 2021年煤矿采煤机(掘进机)操作操作证考试及煤矿采煤机(掘进机)操作模拟考试题库