一、简介

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程序相关推荐

  1. pyinstaller打包生成的exe文件并使用python终止后台的exe程序运行

    pyinstaller打包生成的exe文件并使用python终止后台的exe程序运行 目录 pyinstaller打包生成的exe文件并使用python终止后台的exe程序运行 #pyinstalle ...

  2. python压缩包怎么安装-Python学习笔记-打包发布Python模块或程序,安装包

    Python模块.扩展和应用程序可以按以下几种形式进行打包和发布: python setup.py获取帮助的方式 python setup.py --help python setup.py --he ...

  3. python安装pyqt5 qml_PyQt5:PyQt5程序打包2

    LEARN MORE 正文 今天我们用计算器的例子打包一下这个应用程序(Windows7系统下). 1 简单的打包pyinstaller calculator.py 在屏幕上出现大量的INFO信息后, ...

  4. Py之cx_Freeze:Python库之cx_Freeze库(程序打包)简介、安装、使用方法详细攻略—案例之实现机器人在线24小时智能翻译

    Py之cx_Freeze:Python库之cx_Freeze库(程序打包)简介.安装.使用方法详细攻略-案例之实现机器人在线24小时智能翻译 导读      将Python程序生成exe程序目前流行这 ...

  5. pyqt5能直接编译python吗_用PyInstaller打包用PyQt5编写的python程序

    0.背景 本弱初学PyQt5,写了一个GUI小程序,但在用PyInstaller打包时出现了不少问题,现将几个比较大的问题记录如下,希望以后能记住. 1. 资源打包 首先是资源打包的问题,我写的程序引 ...

  6. vs python生成exe文件_使用VScode编写python程序并打包成.exe文件-文件夹变成exe

    1. 下载vscode并安装 2. 配置Python环境 点击左下角的吃了图标,在弹出的菜单中选择extensions,在左上方搜索框内输入"Python",可以看到好多Pytho ...

  7. python 程序打包 vscode_使用VScode编写python程序并打包成.exe文件

    听说Visual Studio Code(VS Code)的诸多好处,了解了一下果真很喜欢,我喜欢它的缘由主要有3个,一是VS Code开源且跨平台,二是由于其界面很是酷,三是能够知足个人大所属代码需 ...

  8. python 用cx_Freeze打包程序详细解读setup.py

    最近在学习用python开发深度学习工具,发现使用cx_Freeze对程序进行打包时,采用构建setup.py的时候出现很多不清楚的地方,现在详细说明setup.py文件的内容 os.environ[ ...

  9. python打包xp系统_python打包的exe为啥在XP上提示“不是有效的WIN32程序”

    求助超能力者.电脑是WIN7 64位的 python的版本是3.4.4  我还专门找了32位版. 打包工具是pyinstaller 打包出来的EXE 在win7上都能跑,就是放到XP上会提示" ...

最新文章

  1. Windows7无法自动将IP协议堆栈绑定到网络适配器的办法
  2. push and pop
  3. libuv 中文编程指南(零)前言
  4. matlab 排列 拆分,在matlab中将列表拆分为多个变量
  5. 【转载】尝试使用GraphicsMagick的缩略图功能
  6. android 撑满剩余空间,怎么让LinearLayout占据父布局的所有剩余空间
  7. 未捕获的异常 'NSInternalInconsistencyException'
  8. java 正则匹配括号是否成对_十分钟学会正则表达式
  9. 学习C#面向对象设计模式纵横谈---笔记
  10. Mysql学习总结(79)——MySQL常用函数总结
  11. WeCode在线少儿编程|为什么我们选择代码编程
  12. python如何生成app_python创建app
  13. uefi启动服务器系统安装win7系统教程,uefi引导gpt安装win7教程
  14. 棋牌漏洞游戏反汇编译破解修改透视案例分析
  15. 记录一次Java笔试题记录一次Java笔试题
  16. CentOS7创建组删除组创建用户删除用户
  17. 灵活运用CSS开发技巧
  18. 32位超前进位加法器
  19. 软件测试常问100道面试题(含答案以及案例解析),全网最全最新
  20. 2021年煤矿采煤机(掘进机)操作操作证考试及煤矿采煤机(掘进机)操作模拟考试题库

热门文章

  1. 从工业控制系统的角度理解现场总线
  2. Mendeley安装与使用
  3. ssm+java计算机毕业设计高校固定资产管理平台eqg98(程序+lw+源码+远程部署)
  4. 免费OA企业用户何去何从
  5. 如何在 Linux 中查找文件所有者?
  6. 网络爬虫day1:python中的request模块基本使用
  7. 灾难也是机遇,肺炎下的云办公股票暴涨!
  8. 用Python进行人脸识别「包括源代码」
  9. apt-cache手册翻译
  10. 螺旋式上升_互联网和技术如何失控地螺旋上升