py2exe使用方法超详细解析(有截图)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

py2exe使用方法详解最近有很多朋友对网上的py2exe使用教程看不懂,我在这里发布图文详解。平台:python2.51py2exe:0.69forpython2.5这里以打包e://hello.py为例第一步:在e盘新建hello.py:helo.py代码如下:--------------------printhelloraw_input()--------------------图片:第二步:可以在任何路径任何位置新建一个名为setup.py的文件,这里把setup.py建在e盘根目录e:\setup.py:代码如下:fromdistutils.coreimportsetupimportpy2exesetup(console=[r’e:/hello.py’])#这里是要打包的py文件的路径。第三步:打开命令提示符(cmd)。注意:不是python解析器,看到网上很多人都把其理解为python解析器,注意:python解析器!!!是cmd然后切换到你的python25目录,这里我的python25目录为d:\python25然后在cmd下输入:pythone:\setup.pypy2exe注:e:\setup.py是你的setup.py位置(此位置可自行替换)然后按Enter继续,看见一大堆输出信息。搞定!现在去d:\python25目录看看是否生成了名为dist的文件夹进入文件夹dist,点击helo.exe就可以运行你打包的程序了。而dist文件夹就是你打包好的程序文件夹,记住,发布的时候要把里面的所有文件都一同发布!!!运行结果:如果你要打包*.pyw文件,只要把setup.py里的console改成windows即可如果还不懂,可以试试这个图形化打包的软件:点击这里查看。再不懂可以留言问我!py2exe是一种python发布工具,可以用来将python脚本转换成windows下的可执行程序,而且不需要安装python环境便可运行。py2exe现在可以用来创建使用了wxPython,Tkinter,Pmw,PyGTK,pygame,win32comclient以及server等模块的程序。要使用py2exe编译工具,首先要安装。python自身不带这个功能。关于py2exe的基本用法:1、首先需要我们自己手写一个setup.py程序,内容为:fromdistutils.croeimportsetup'''distutils是python内建的模块。这里从distutils里导入setup方法。'''importpy2exe'''导入py2exe模块'''setup(console=['myprogram.py'])'''console后面跟的是一个列表。此处的myprogram.py是你要编译的.py程序这里我使用了console这个参数,它表示的是程序运行在命令提示符下,也就是DOS窗口里。或者说是CMD.exe里。如果你的python里使用了图形组建,即:GUI,那么就要把console改成windows。'''把上面这段代码保存后,我们切换到cmd.exe里,运行下面的命令:pythonsetup.pypy2exe就会出现编译过程,最后会生成两个文件夹:build和dist,其中dist目录里面存放的是你编译好的可执行文件myprogram.exe,此时,你就可以直接运行这个生成的.exe文件了。另一个build目录是临时文件可以删除。当你在其他没有python环境的系统上运行必要的文件:*.pyd,library.zip,MSVCR71.dllpython*.dll这几个文件是必须要和生成的.exe文件放在一起。以上是最基本的编译方法。不过在我测试的时候出现了问题。我用pyqt4写了一个最简单的小程序,功能就是显示一个窗口。文件名称是window.py代码如下:#!/usr/bin/python#filename:window.pyimportsysfromPyQt4importQtCore,QtGuiclassMywindow(QtGui.QMainWindow):def__init__(self):QtGui.QMainWindow.__init__(self)self.setWindowTitle('myfirstpyqtwindow')self.resize(300,200)app=QtGui.QApplication(sys.argv)mywindow=Mywindow()mywindow.show()app.exec_()用来编译的setup.py代码如下:#!/usr/bin/python#filename:setup.pyfromdistutils.coreimportsetupimportpy2exesetup(windows=[window.py])整个编译过程都很顺利,可是当我运行编译好的window.exe文件的时候,出现了错误提示:Traceback(mostrecentcalllast):Filewindow.py,line5,inmoduleFilePyQt4\QtCore.pyc,line12,inmoduleFilePyQt4\QtCore.pyc,line10,in__loadImportError:Nomodulenamedsip这让我很困惑,后来去搜索了一下得到如下解决方法:#!/usr/bin/python#filename:setup.pyfromdistutils.coreimportsetupimportpy2exesetup(windows=[{script:myprogram.py}],options={py2exe:{includes:[sip]}})这样再次编译一下,程序可以正常运行,这其中的关键是在与setup这个函数可以带很多参数,我就是因为不了解setup所以出现了比较困惑的问题。关于更多py2exe的使用方法和更多参数介绍,目前还没找到更详细的介绍,只在里面找到了这一段:不过我觉得写算是比较详细的了。其中我做了些小小的改动。在此对作者表示歉意!1.打包文件最好要和你的主程序文件放在同一目录下.我曾经试着把打包文件放在上级目录,结果在搜索依赖库的时候遇到了很多麻烦.2.打包文件本身其实也是一个python的程序,虽然一般只有一个setup函数.此函数可以有name,description,version,console,windows,options,data_files等参数.3.要生成一个或多个命令行的exe,setup需要一个List型的名为console参数,指名源py文件.4.要生成一个或多个GUI的exe,setup需要一个List型的名为windows参数,指名源py文件.List的每项都可以有图标等选项,就是icon_resources哪里,图标也是个Tuple的List,但是windows一般只会显示出第一个图标,所以一个就够了.5.如果你想用png文件直接当图标,那很可能会在生成exe的时候,引起python崩溃,所以还是赶紧转成ico吧6.如果你和我一样,生成的GUI的exe文件,在执行的时候,报ImportError:Nomodulenamedcairo,那最好在setup函数里加上options,里面有includecairo的选项.7.如果你也有数据文件(比如glade文件,图片文件等),py2exe默认并不会帮你一起打包,你需要在setup函数中加传data_files参数.data_files需要是一个List,每项可以是直接指向数据文件的字符串,也可以是一个Tuple;如果是前者,数据文件会直接在生成的dist目录下面,如果是后者,Tuple的第一个元素是目标目录,第二个元素是是个源文件名的List,效果是把所有的源文件存放在dist下的指定的目标目录下.(呃,好长好拗口…)8.在py2exe生成的环境中,__file__这个应用将失效,这个问题的解决方法可以参看这里.个人觉得AlternateSolution更加靠谱.9.好了,现在如果你已经写好了打包文件(win_packer.py),也对源代码进行了应有的修改,你就可以执行pythonwin_packer.pypy2exe来生成exe了,执行此命令会在当前目录下多出一个dist目录,你只要把dist目录复制出来,运行里面的exe,就可以了10.最后,如果你的GUI程序还是运行不了,你还需要手工将你的GTK+安装安装目录(默认是C:\GTK)下的etc和lib目录复制到dist目录。py2exe用法from:簡介Descriptionpy2exe是一個工具程式,可以將python程式轉換成為單一的執行檔案。在某些情況下使用者也許不想安裝整個python套件或是相關的檔案。透過py2exe可以將您的工具包裝成單一的執行檔,及數個相關檔案。使用者只要下載這幾個檔案就可以執行該程式了。因為py2exe會自動將該工具的或自動搜尋您的python程式中所有用到的模組及檔案加以集中包裝至這數個檔案中。關於py2exe的相關資訊可以在下面的網站中找到。[url=][/url]且讓我用一個範例來說明。我寫了一個wxPython的程式。大家都知道wxPython就是python及wxWidgets的結合。對於使用者來說,要同時在他們的電腦中安裝python及wxPython,其實是個蠻沈重的負擔。所以我打算使用py2exe將我寫的工具包裝起來。我的程式總共有兩個檔案分別是:HtmlConv.py及MainFrame.py。此時,我們需要準備小小的python程式,透過這個程式來呼叫py2exe包裝我們的程式。我們將這個程式取名為setup.py。其內容如下:#setup.pyfromdistutils.coreimportsetupimportpy2exesetup(windows=[HtmlConv.py])讓我們來看一下這個檔案的內容。首先,我們可以看到這個python程式引入了distutils這個模組,這個模組是python的標準模組之一。py2exe其實算是他的擴充模組之一,所以需要載入這個模組中的setup部分。然後,再引入py2exe這個模組。因為我們的程式很簡單,所以只需要簡單的呼叫setupfunction。並且在在參數中指定您的主要程式的檔名。您或許會懷疑,我們怎麼不用指定MainFrame.py這個檔案呢?因為MainFrame.py是被HtmlConv.py這個檔案所import的,py2exe在處理HtmlConv.py時,就會處理到MainFrame.py了。有了這三個檔案後,我們需要透過command的方式呼叫python來執行我們的setup.py程式。指令如下:python.exesetup.pypy2exe您也可以透過下面的命令來瞭解py2exe提供了哪些commandline參數:python.exesetup.pypy2exe--help接著,您會看到有些訊息跑出來,如果都沒有錯誤出現,您會看到出現了兩個新的目錄名為build以及dist。其中build是py2exe再製作過程中的一個暫存目錄。您可以不予理會。而dist目錄中就是您要的東西了。我們的範例中dist目錄產生了下面這些檔案:HtmlConv.exelibrary.zippython23.dllw9xpopen.exewxc.pydxmsw24uh.dll使用者只需要將這幾個檔案拷貝回去執行Html

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功