標籤: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)