PySide2 / PyQt5,  Python

PyInstaller:Python 程式轉換失敗

今天試著用 Pyinstaller 把 Python 的程式轉成執行檔時,遇到一個我覺得很棘手的問題,導致轉換出來的程式都不能用。

通常我也不太會去轉換執行檔,但是我如果是用 PyQt5 製做得程式,通常會試著看看能不能包裝起來,給別人用得時候就是只有介面,也不用擔心他們用得時候程式會被修改。

轉換過程雖有一些錯誤,但還是可以把程式轉換出來,但轉出來的執行檔怎麼樣就是打不開,先來看看下面丟出來的 bug。

Fatal Python error: initfsencoding: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00003c8c (most recent call first):

說實話,完全不懂要表達什麼啊啊啊 щ(゚Д゚щ)

原本想說會不會是 Pyinstaller 的版本有問題或是沒裝好,砍掉重新安裝舊版本,發現舊版本裝不起來,看 Error 似乎是 enum 這個模組有問題,但是安裝回原來版本卻可以成功安裝,之前都沒這個問題啊。

重新裝完之後,抱著一絲絲希望去轉換看看,看看能不能成功,結果轉出來的東西還是一樣不能開,而且還是一樣的錯誤啊啊啊 щ(゚Д゚щ)


既然這樣,這次決定好好看看轉換過程發生了什麼問題。忘記截圖中間過程了,但是主要就是出現下面的 Error。

AttributeError: module 'enum' has no attribute 'IntFlag'?

之前轉換都沒這問題,今天多裝了一個影像感測器的模組 (pyueye) 之後,就一直轉換失敗了。既然上面的錯誤是說enum有問題,那就把它砍掉看看,沒想到,居然就成功了!!!

雖然成功了,但感覺還是很不爽,上網查了一下 (link),大概就是enum這個模組在新版 Python 已經不用了,因此無法正確執行,所以刪掉就可以了

結語

雖然說問題是很快排除,但裝個新模組就讓 Pyinstaller 無法正常工作,還是覺得很@^em>!@</em)#,雖然以前用 Pyinstaller 就遇過其他模組無法正常包裝的問題,看來 Python 要整合成應用程式還是很雞肋啊,小程式問題不大,但大程式問題就大條了,太多相關的模組需要包裝起來,而且整合出來的檔案也特大,不知道正常要發布完成的 Python 作品是用什麼方法。

留下一個回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *