另一方面,配置文件py2exe是将python脚本转换为windows上可独立执行的可执行程序(*.exe )的工具,从而无需安装python即可在windows系统上执行该可执行程序
py2exe已经用于创建wxPython、Tkinter、Pmw、PyGTK、pygame、win32 com客户端和服务器以及其他独立程序。 py2exe是在开放源代码许可证下发布的。 目前,只有python2.x的版本支持。
二、安装py2exe的方式一:我直接使用pip install py2exe,我使用的Python版本是3.6,这在后续打包过程中出现了问题,运行: python my setup.py py py
经过调查,版本不兼容:
thefailureyou ' reseeingoccursinpy2exeopcodeparsingcode,which,genthemostrecentpostedversionofpy2exeonlyclaimssupportfor 3.3 couldnotpossiblyhaveknowledgeof,or support for, the new they hadn ' tevenbeenceivedofatthetimepy2exewaslastupdated.thebytecodeoftengesinsmallwaysfromversiontoversionthathated only 3.3 and 3.4 supportisclaimedexplicitly ),but 3.6 is 100% guaranteed to fail .有版本不兼容。
但是关于其他版本应该没有任何问题。 如果想使用py2exe的朋友,可以尝试其他版本
方法2
python3.6不行,所以我决定用python2.7。 结果,被告知需要3.3以上的版本。 我安装了2.7和3.6。 偶然也不合适。
解决方案:下载https://source forge.net/projects/py2exe/files/py2exe/0.6.9/exe程序直接双击运行即可。 请注意正在安装的路径。
三、如何使用py2exe如果有一个名为helloworld.py的python脚本,想将其转换为在windows上运行的可执行程序,然后在没有安装python的windows系统上运行,请先在my 其中的seety
mysetup.py的例子如下:所示
1
2
3
4
5
# mysetup.py
fromdistutils.coreimportsetup
importpy2exe
setup (控制台=[ ' hello world.py ' ]
将控制台更改为windows时, pyw文件将打包,不会生成类似于cmd的窗口
然后,按如下方式运行mysetup.py:
python mysetup.py py2exe
上面的命令将生成一个名为dist的子目录,其中包含文件helloworld.exe、python24.dll和library.zip。
如果使用编译为helloworld.py脚本的c扩展模块,则这些模块也会复制到子目录中。 同样,运行时需要所有dll文件,系统的dll文件除外。
dist子目录中的文件包含程序所需的内容。 必须一起发布此子目录中的所有内容。
默认情况下,py2exe在目录dist下创建以下必需文件:
一个或多个exe文件。 python##.dll。 一些. pyd文件。 这些是编译的扩展名,exe文件需要它们。 添加其他. dll文件。 pyd需要这些. dll。 library.zip文件,通过编译纯python模块(如. pyc和. pyo上的mysetup.py )创建控制台的helloword.exe程序。 如果要为图形用户界面创建程序,只需在mysetup.py上创建consolold程序
主要注意事项是setup (控制台=[ ' hello world.py ' ] )还是setup )。 区别在于,console是控制台程序,如果有图形界面,则是控制台程序。如果项目中有多个py文件,则只需写入口的py文件名。 如果程序依赖于py文件以外的其他类型的文件,如配置文件config.ini
,txt文件,图标等,需要在setup中指定,打包程序会复制到打包的目录下,如果没有图形化界面而用Windows,执行.exe文件时会报错:py2exe一次能够创建多个exe文件,你需要将这些脚本文件的列表传递给console或windows的关键字参数。如果你有几个相关联的脚本,那么这是很有用的。
运行下面个命令,将显示py2exe命令的所有命令行标记。
python mysetup.py py2exe --help
四、指定额外的文件
一些应用程序在运行时需要额外的文件,诸如配置文件、字体、位图。
如果在安装脚本中用data_files可选项指定了那些额外的文件,那么py2exe能将这些文件拷贝到dist子目录中。data_files应包含一个元组(target-dir, files)列表,其中的files是这些额外的文件的列表。
示例如下:
# mysetup.py
from distutils.coreimport 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选项将创建一个子目录distbitmaps,其中包含两个.gif文件;一个子目录distfonts,其中包含了所有的.fnt文件。
五、Windows NT services你可以通过传递一个service关键字参数给setup函数来建造Windows NT services
,这个service参数的值必须是一个Python模块名(包含一service类)的列表。
示例如下:
# mysetup.py
from distutils.coreimport 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.coreimport setup
import py2exe
setup(com_server=["win32com.server.interp"])
默认情况下,DLL和EXE servers被建造,你不需要它们的话你可以简单的删除它们。
另:一个标准的setup.py的代码如下:
#!/usr/zldddd/python
#filename:setup.py
#coding=utf-8
from distutils.coreimport setup
import py2exe
includes= ["encodings","encodings.*"]
#要包含的其它库文件
options= {"py2exe":
{ "compressed":1,#压缩
"optimize":2,
"ascii":1,
"includes":includes,
"bundle_files":1 #所有文件打包成一个exe文件 }
}
setup(
version= "XXX",
description= "XXX",
name= "XXX",
options= options,
zipfile=None,#不生成library.zip文件
console=[ { "script":"hello.py",
"icon_resources": [(1,"hello.ico")] } ]#源文件,程序图标
)
翻译:https://blog.csdn.net/qw_xingzhe/article/details/74019035