• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            任我行

            一天一個(gè)腳印......
            每日一句:
            posts - 54, comments - 218, trackbacks - 1, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            py2exe工具簡介

            Posted on 2005-10-12 10:59 任我行 閱讀(1307) 評論(0)  編輯 收藏 引用 所屬分類: Python

            py2exe工具簡介......                                      

            py2exe是一個(gè)工具程式,可以將python程式轉(zhuǎn)換成為單一的執(zhí)行檔案。在某些情況下使用者也許不希望安裝整個(gè)python套件或是相關(guān)的檔案。透過py2exe可以將您的工具包裝成單一的執(zhí)行檔,及數(shù)個(gè)相關(guān)檔案。使用者只要下載這幾個(gè)檔案就可以執(zhí)行該程式了。因?yàn)閜y2exe會自動將該工具的或自動搜尋您的python程式中所有用到的模組及檔案加以集中包裝至這數(shù)個(gè)檔案中。關(guān)於py2exe的相關(guān)資訊可以在下面的網(wǎng)站中找到。http://sourceforge.net/projects/py2exe/

            且讓我用一個(gè)範(fàn)例來說明。我寫了一個(gè)wxPython的程式。大家都知道wxPython就是python及wxWindows的結(jié)合。對於使用者來說,要同時(shí)在他們的電腦中安裝python及wxPython,其實(shí)是個(gè)蠻沈重的負(fù)擔(dān)。所以我打算使用py2exe將我寫的工具包裝起來。我的程式總共有兩個(gè)檔案分別是:HtmlConv.py及MainFrame.py。此時(shí),我們需要準(zhǔn)備小小的python程式,透過這個(gè)程式來呼叫py2exe包裝我們的程式。我們將這個(gè)程式取名為setup.py。其內(nèi)容如下:# setup.py
            from distutils.core import setup
            import py2exe
             setup(windows=["HtmlConv.py"])
            讓我們來看一下這個(gè)檔案的內(nèi)容。首先,我們可以看到這個(gè)python程式引入了distutils這個(gè)模組,這個(gè)模組是python的標(biāo)準(zhǔn)模組之一。py2exe其實(shí)算是他的擴(kuò)充模組之一,所以需要載入這個(gè)模組中的setup部分。然後,再引入py2exe這個(gè)模組。因?yàn)槲覀兊某淌胶芎唵危灾恍枰唵蔚暮艚衧etup function。並且在在參數(shù)中指定您的主要程式的檔名。您或許會懷疑,我們怎麼不用指定MainFrame.py這個(gè)檔案呢?因?yàn)镸ainFrame.py是被HtmlConv.py這個(gè)檔案所import的,py2exe在處理HtmlConv.py時(shí),就會處理到MainFrame.py了。有了這三個(gè)檔案後,我們需要透過command的方式呼叫python來執(zhí)行我們的setup.py程式。指令如下:python.exe setup.py py2exe
            您也可以透過下面的命令來瞭解py2exe提供了哪些command line參數(shù):python.exe setup.py py2exe --help
            接著,您會看到許多的訊息跑出來,如果都沒有錯(cuò)誤出現(xiàn),您會看到出現(xiàn)了兩個(gè)新的目錄名為build以及dist。其中build是py2exe再製作過程中的一個(gè)暫存目錄。您可以不予理會。而dist目錄中就是您要的東西了。我們的範(fàn)例中dist目錄產(chǎn)生了下面這些檔案:HtmlConv.exe
            library.p
            python23.dll
            w9xpopen.exe
            wxc.pyd
            xmsw24uh.dll
            使用者只需要將這幾個(gè)檔案拷貝回去執(zhí)行HtmlConv.exe就可以執(zhí)行我們的工具程式。這對於使用者來說,無疑是非常方便的。現(xiàn)在讓我們重新看看setup.py這個(gè)檔案的內(nèi)容。因?yàn)槲业墓ぞ叱淌绞且暣敖槊娴模恍枰霈F(xiàn)console視窗。因此,我透過指定 windows=["HtmlConv.py"] 的方式來指定主要檔案。如果您的程式是屬於console介面的,您就應(yīng)該使用 console=["xxx.py"] 的方式來指定您的程式。此外,py2exe也支援Windows Service及COM元件類型的程式。分別使用下面的方式指定之:service=["MyService"]
            或com_server=["win32com.server.interp"]
            py2exe其實(shí)是透過python的modulefinder來找到所需的module,再將他們包裝在一起。您在dist目錄中所看到的library.p就是這些module的壓縮檔。不過,也正因?yàn)槿绱耍绻且恍┠淌街兴枰馁Y料檔,如圖片,音效等等。py2exe並沒有辦法幫您自動包裝起來。不過,您還是可以透過手動的方式在setup.py中指定setup function的參數(shù)來告訴py2exe您還有哪些檔案。假設(shè)我們原來程式有一個(gè)子目錄名為bmp,下面放了一些程式用到的圖形檔。另外,還有一個(gè)子目錄名為wav,放了一些程式會用到的wav檔案。此時(shí),我們的setup function參數(shù)應(yīng)修改為如下:setup(windows=["HtmlConv.py"],
                  data_files=[("bmp",
                               ["bmp/logo.bmp", "bmp/title.gif"]),
                              ("wav",
                               glob.glob("sounds\*.wav"))])
            data_files這個(gè)參數(shù)是一個(gè)list,list內(nèi)的每個(gè)元素都是一個(gè)pair。pair的第一個(gè)元素是您所指定的檔案的目的地。第二個(gè)元素是一個(gè)list,列出了那些檔案的來源。且讓我們仔細(xì)看看上面的範(fàn)例。第一組pair,告訴py2exe在dist目錄下面另外建立一個(gè)bmp目錄,並且將原來bmp目錄中的的logo.bmp及title.gif檔案複製到dist目錄中的bmp子目錄。如果您不希望建立子目錄,可以將目的目錄指定為空白字串。此時(shí),py2exe會將您指定的檔案複製到dist目錄下。而第二組pair告訴py2exe在dist目錄中建立wav子目錄。然後將sounds目錄中的所有副檔名為wav的檔案拷貝過去。由於我們用了glob的功能。所以別忘了在setup.py中import glob模組。預(yù)設(shè)的狀況下,製作出來的執(zhí)行檔所使用的icon是windows下的預(yù)設(shè)icon。其實(shí),您可以自己將他修改成其他的icon。首先您先要準(zhǔn)備好一個(gè)icon檔案。以上面的例子來說,我們準(zhǔn)備一個(gè)名為HtmlConv.ico的檔案(檔名未必要與python程式相同)。接著,將上面的範(fàn)例修改如下:setup(windows=["HtmlConv.py", {"script":"HtmlConv.py", "icon_resources":[(1, "HtmlConv.ico")]}],
                  data_files=[("bmp",
                               ["bmp/logo.bmp", "bmp/title.gif"]),
                              ("wav",
                               glob.glob("sounds\*.wav"))])
            重新製作執(zhí)行檔後,該執(zhí)行檔就會是您所指定的icon囉。py2exe的使用對於會使用python的programmer來說,是非常簡單。而對於使用者而言,可以不用安裝許多不必要的東西就可以使用。實(shí)在是非常值得推薦的工具。

            久久婷婷激情综合色综合俺也去 | 久久久中文字幕| 国产精品美女久久久m| 欧美亚洲另类久久综合| 久久精品成人免费国产片小草| 久久精品无码一区二区三区日韩| 亚洲天堂久久久| 97久久国产亚洲精品超碰热| 久久中文字幕无码专区| 久久精品国产亚洲av高清漫画 | 国产精品成人精品久久久| 久久精品国产男包| 91精品国产9l久久久久| 漂亮人妻被中出中文字幕久久 | 久久无码一区二区三区少妇 | 久久青青草原精品国产软件| 天堂久久天堂AV色综合| 91久久福利国产成人精品| 亚洲国产精品久久久天堂| 国内精品久久久久影院老司| 国产亚洲精午夜久久久久久| 青青草国产精品久久| 欧美一区二区三区久久综合 | 亚洲国产精品无码久久| 人人妻久久人人澡人人爽人人精品| 品成人欧美大片久久国产欧美... 品成人欧美大片久久国产欧美 | 激情久久久久久久久久| 久久r热这里有精品视频| 国产Av激情久久无码天堂| 97久久国产综合精品女不卡 | 武侠古典久久婷婷狼人伊人| 93精91精品国产综合久久香蕉| jizzjizz国产精品久久| 久久香综合精品久久伊人| 久久精品国产亚洲av麻豆小说 | .精品久久久麻豆国产精品| 久久亚洲精品成人AV| 国产成人精品免费久久久久| 成人妇女免费播放久久久| 久久精品国产亚洲网站| 国产女人aaa级久久久级|