青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

任我行

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

py2exe工具簡介

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

py2exe工具簡介......                                      

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

且讓我用一個範例來說明。我寫了一個wxPython的程式。大家都知道wxPython就是python及wxWindows的結合。對於使用者來說,要同時在他們的電腦中安裝python及wxPython,其實是個蠻沈重的負擔。所以我打算使用py2exe將我寫的工具包裝起來。我的程式總共有兩個檔案分別是:HtmlConv.py及MainFrame.py。此時,我們需要準備小小的python程式,透過這個程式來呼叫py2exe包裝我們的程式。我們將這個程式取名為setup.py。其內容如下:# setup.py
from distutils.core import setup
import py2exe
 setup(windows=["HtmlConv.py"])
讓我們來看一下這個檔案的內容。首先,我們可以看到這個python程式引入了distutils這個模組,這個模組是python的標準模組之一。py2exe其實算是他的擴充模組之一,所以需要載入這個模組中的setup部分。然後,再引入py2exe這個模組。因為我們的程式很簡單,所以只需要簡單的呼叫setup function。並且在在參數中指定您的主要程式的檔名。您或許會懷疑,我們怎麼不用指定MainFrame.py這個檔案呢?因為MainFrame.py是被HtmlConv.py這個檔案所import的,py2exe在處理HtmlConv.py時,就會處理到MainFrame.py了。有了這三個檔案後,我們需要透過command的方式呼叫python來執行我們的setup.py程式。指令如下:python.exe setup.py py2exe
您也可以透過下面的命令來瞭解py2exe提供了哪些command line參數:python.exe setup.py py2exe --help
接著,您會看到許多的訊息跑出來,如果都沒有錯誤出現,您會看到出現了兩個新的目錄名為build以及dist。其中build是py2exe再製作過程中的一個暫存目錄。您可以不予理會。而dist目錄中就是您要的東西了。我們的範例中dist目錄產生了下面這些檔案:HtmlConv.exe
library.p
python23.dll
w9xpopen.exe
wxc.pyd
xmsw24uh.dll
使用者只需要將這幾個檔案拷貝回去執行HtmlConv.exe就可以執行我們的工具程式。這對於使用者來說,無疑是非常方便的。現在讓我們重新看看setup.py這個檔案的內容。因為我的工具程式是視窗介面的,不需要出現console視窗。因此,我透過指定 windows=["HtmlConv.py"] 的方式來指定主要檔案。如果您的程式是屬於console介面的,您就應該使用 console=["xxx.py"] 的方式來指定您的程式。此外,py2exe也支援Windows Service及COM元件類型的程式。分別使用下面的方式指定之:service=["MyService"]
或com_server=["win32com.server.interp"]
py2exe其實是透過python的modulefinder來找到所需的module,再將他們包裝在一起。您在dist目錄中所看到的library.p就是這些module的壓縮檔。不過,也正因為如此,如果是一些您程式中所需要的資料檔,如圖片,音效等等。py2exe並沒有辦法幫您自動包裝起來。不過,您還是可以透過手動的方式在setup.py中指定setup function的參數來告訴py2exe您還有哪些檔案。假設我們原來程式有一個子目錄名為bmp,下面放了一些程式用到的圖形檔。另外,還有一個子目錄名為wav,放了一些程式會用到的wav檔案。此時,我們的setup function參數應修改為如下:setup(windows=["HtmlConv.py"],
      data_files=[("bmp",
                   ["bmp/logo.bmp", "bmp/title.gif"]),
                  ("wav",
                   glob.glob("sounds\*.wav"))])
data_files這個參數是一個list,list內的每個元素都是一個pair。pair的第一個元素是您所指定的檔案的目的地。第二個元素是一個list,列出了那些檔案的來源。且讓我們仔細看看上面的範例。第一組pair,告訴py2exe在dist目錄下面另外建立一個bmp目錄,並且將原來bmp目錄中的的logo.bmp及title.gif檔案複製到dist目錄中的bmp子目錄。如果您不希望建立子目錄,可以將目的目錄指定為空白字串。此時,py2exe會將您指定的檔案複製到dist目錄下。而第二組pair告訴py2exe在dist目錄中建立wav子目錄。然後將sounds目錄中的所有副檔名為wav的檔案拷貝過去。由於我們用了glob的功能。所以別忘了在setup.py中import glob模組。預設的狀況下,製作出來的執行檔所使用的icon是windows下的預設icon。其實,您可以自己將他修改成其他的icon。首先您先要準備好一個icon檔案。以上面的例子來說,我們準備一個名為HtmlConv.ico的檔案(檔名未必要與python程式相同)。接著,將上面的範例修改如下: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"))])
重新製作執行檔後,該執行檔就會是您所指定的icon囉。py2exe的使用對於會使用python的programmer來說,是非常簡單。而對於使用者而言,可以不用安裝許多不必要的東西就可以使用。實在是非常值得推薦的工具。

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美日韩视频一区二区三区| 蜜桃av综合| 一区二区三区毛片| 欧美日韩另类字幕中文| 中文亚洲免费| 亚洲欧美中文在线视频| 狠狠综合久久av一区二区小说 | 久久裸体艺术| 欧美成人午夜激情| 亚洲视频视频在线| 亚洲影视在线| 在线看不卡av| 亚洲人体1000| 国产精品视频免费| 美日韩免费视频| 欧美乱大交xxxxx| 欧美在线高清| 免费欧美日韩国产三级电影| 亚洲一区二区网站| 久久久91精品国产| 日韩午夜免费视频| 午夜精品99久久免费| 在线国产精品一区| 一区二区三区国产在线| 好吊色欧美一区二区三区视频| 欧美激情一区二区三区在线| 国产精品亚洲аv天堂网| 免费观看不卡av| 国产精品久久97| 免费成人av| 国产女主播一区二区| 亚洲电影在线| 国产亚洲欧美另类一区二区三区| 亚洲国产精品成人精品| 国产日韩精品入口| 日韩亚洲在线| 亚洲精品久久久久久一区二区 | 亚洲片国产一区一级在线观看| 国产欧美69| 99精品视频一区| 亚洲激情视频网站| 欧美在线首页| 欧美一区二区播放| 欧美午夜宅男影院在线观看| 亚洲成人在线视频播放| 国产精品亚洲人在线观看| 欧美高清视频一区二区| 国产一区在线播放| 亚洲私拍自拍| 一区二区高清| 欧美成人日韩| 亚洲成人在线视频播放| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲欧美日韩综合aⅴ视频| 国产精品99久久久久久久vr | 国产精品黄视频| 夜夜嗨av一区二区三区四区| 亚洲欧美一级二级三级| 一区二区视频欧美| 久久成人精品一区二区三区| 性欧美18~19sex高清播放| 国产精品xxxxx| 亚洲视频在线二区| 午夜精品福利一区二区蜜股av| 欧美视频不卡| 一区二区免费在线播放| 亚洲在线视频一区| 国产精品入口| 亚洲欧美在线一区二区| 午夜在线成人av| 国产欧美日韩在线播放| 99视频热这里只有精品免费| 亚洲少妇中出一区| 欧美国产日韩一区二区在线观看| 欧美福利视频网站| 亚洲国产日韩欧美在线动漫| 亚洲激情第一页| 一区二区三区日韩| 欧美美女bb生活片| 欧美成人性生活| 亚洲国语精品自产拍在线观看| 久久久www| 欧美v亚洲v综合ⅴ国产v| 在线不卡视频| 欧美在线影院| 亚洲人成7777| 亚洲午夜精品17c| 欧美午夜精品| 亚洲欧美一区二区三区极速播放| 午夜激情综合网| 国产午夜精品一区二区三区视频 | 免播放器亚洲一区| 黄色日韩网站视频| 亚洲免费一在线| 亚洲欧美日韩一区二区在线 | 亚洲午夜久久久久久久久电影院| 亚洲一区久久久| 国产精品一二三四| 欧美中文字幕视频在线观看| 欧美亚洲视频一区二区| 亚洲国产精品福利| 欧美视频在线观看一区| 亚洲一区二区三区四区中文| 久久久.com| 夜夜嗨av一区二区三区中文字幕| 欧美日韩免费高清一区色橹橹| 在线亚洲免费视频| 美日韩精品免费| av成人手机在线| 国产欧美日本一区二区三区| 玖玖玖国产精品| 亚洲一区二区三区精品视频| 亚洲高清久久网| 久久成人18免费网站| 亚洲欧洲一区二区在线播放| 国产精品入口麻豆原神| 久久久久久亚洲精品杨幂换脸 | 亚洲国产一区二区a毛片| 欧美日韩三级视频| 久久网站热最新地址| 小嫩嫩精品导航| 欧美午夜一区二区| 久久精品99国产精品| 99在线观看免费视频精品观看| 久久九九热re6这里有精品| 洋洋av久久久久久久一区| 欧美日韩一区二区三区四区五区| 午夜在线不卡| 亚洲欧洲视频在线| 欧美aaaaaaaa牛牛影院| 亚洲欧美成人| 日韩视频精品在线| 国户精品久久久久久久久久久不卡| 欧美精品色综合| 久久综合色8888| 亚洲综合精品自拍| 一本大道av伊人久久综合| 久久综合九色综合久99| 在线观看国产欧美| 一区二区三区自拍| 国产午夜精品久久久久久免费视| 欧美视频亚洲视频| 欧美激情久久久| 久久久亚洲综合| 午夜亚洲福利| 亚洲免费av网站| 中文在线一区| 一本久久青青| 亚洲狼人精品一区二区三区| 亚洲国产精品免费| 免费在线欧美视频| 母乳一区在线观看| 久久综合中文色婷婷| 久久久之久亚州精品露出| 欧美亚洲在线播放| 香蕉视频成人在线观看| 午夜精品久久久久久| 久久精品国产精品亚洲| 久久亚洲高清| 免费短视频成人日韩| 女同性一区二区三区人了人一 | 欧美日韩在线一区二区| 欧美日韩国产美女| 欧美日韩性生活视频| 欧美日韩精品一区| 国产精品人成在线观看免费 | 亚洲激情国产精品| 亚洲大胆美女视频| 亚洲啪啪91| 夜夜爽www精品| 亚洲欧美在线网| 久久久久久久久久久一区| 欧美激情亚洲自拍| 欧美先锋影音| 国产美女精品| 亚洲福利视频一区| 日韩午夜精品| 欧美一区二区三区喷汁尤物| 欧美一区二区三区婷婷月色| 久久激情视频免费观看| 欧美暴力喷水在线| 亚洲三级影院| 午夜国产精品影院在线观看| 欧美在线看片| 欧美国产精品| 国产精品视频第一区| 国产视频亚洲精品| 亚洲精品午夜| 亚洲欧美日本国产专区一区| 久久精品成人欧美大片古装| 欧美1区2区视频| 欧美国产日本韩| 香蕉久久久久久久av网站| 开心色5月久久精品| 亚洲午夜视频| 久久国产一区| 亚洲第一在线综合在线| 亚洲淫性视频| 美女视频一区免费观看| 国产精品成av人在线视午夜片|