win10環境下利用pyinstaller把python代碼(.py)打包成可執行檔(.exe)

來源:互聯網
上載者:User

標籤:text   class   和我   ble   oat   code   winerror   idt   post   

前言

最近寫了一個小小的檢測程式,python寫起來只需要短短一百行,可是打包起來就沒有C那麼容易了。下面記錄一下我艱難的“打包”過程。

方法一:py2exe

py2exe是一種經典的方法,為什麼說他經典呢?因為這玩意取了個這麼好聽的名字,但是只支援到python3.4,你這讓我們這種緊跟時代潮流的弄潮兒怎麼打包?

好吧,放棄。

方法二:pyinstaller

這是一個看起來比較靠譜的方法,只需要用pip安裝,然後在命令窗裡面一通操作就可以了。在這裡,我參考了另一位老哥的部落格(http://blog.csdn.net/mrlevo520/article/details/51840217)

不管那麼多,我直接三下五除二,開始了pip,開啟Anaconda Prompt,輸入”pip install pyinstaller“

我是採用Anaconda安裝的python3,所以自然用的是Anaconda Prompt,這裡大家應該沒有什麼疑問吧 :)。

結果令人惋惜:

 

 

PermissionError: [WinError 32] 另一個程式正在使用此檔案,進程無法訪問。

無奈的我只好上網尋求協助,在這位同學的部落格(http://blog.csdn.net/qq_33530388/article/details/68933201)找到瞭解決方法,原來是編碼的問題。雖然py3統一用utf-8了。但win下的終端顯示用的還是gbk編碼。

解決方案如下:

從你的python檔案夾裡找到pip下的compat檔案夾,我的在F:\python\Anaconda3\Lib\site-packages\pip\compat沒錯就是這裡,有一個__init__.py檔案,開啟它,執行以下操作:return s.decode(‘utf_8‘) 改為return s.decode(‘cp936‘)

OK,結束後再次嘗試,看看能不能解決。。

PermissionError: [WinError 32] 另一個程式正在使用此檔案,進程無法訪問。好吧,還是不行。。。

不過功夫不負有心人,終於在另一個部落格那裡(http://blog.csdn.net/create115721/article/details/79238696),我找到瞭解決方法:

將剛才那個__init__.py檔案中所有‘utf-8‘改為‘gbk‘。如此便解決了編碼的問題。

 

安裝完畢,接下來開始打包。

有和我一樣忘了在windows的CMD中操作的同學請自覺複習(http://www.cnblogs.com/kekec/p/3662125.html),我這裡就是直接進入F盤,輸入“F:”,然後不停的cd到My Code所在的檔案夾。

最後執行命令:pyinstaller work1.py

結果:

 

 

 

這樣就算是大功告成了吧,進入該目錄下的dist檔案夾開啟看看,運行.exe檔案,和一樣沒問題。可是。。我們還漏了一個重要的細節。

因為我們沒有加參數,所以pyinstaller打包成散包。具體參數如下:

 

參數 定義
-F 指定打包後只產生一個exe格式的檔案
-D –onedir 建立一個目錄,包含exe檔案,但會依賴很多檔案(預設選項)
-c –console, –nowindowed 使用控制台,無介面(預設)
-w –windowed, –noconsole 使用視窗,不控制台
-p 添加搜尋路徑,讓其找到對應的庫。
-i 改變產生程式的icon表徵圖
       所以可以用參數-F 讓產生一個檔案,輸入:pyinstaller -F work1.py 這個檔案就可以發給你的朋友們,開啟後愉快的happy(裝b)啦!。。  

 

win10環境下利用pyinstaller把python代碼(.py)打包成可執行檔(.exe)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.