1. 程式人生 > >使用pyinstaller打包多個py檔案時,遇到的no module ...,exe檔案一閃而過,自定義模組打包等問題

使用pyinstaller打包多個py檔案時,遇到的no module ...,exe檔案一閃而過,自定義模組打包等問題

1.跳過pyinstaller的安裝,自行谷歌

2.

用cmd cd到你想要打包的py檔案所在的資料夾下面,這裡我的資料夾是ceshi;我需要打包的檔案為main.py、a1.py、a2.py

3.執行命令pyi-makespec main.py,這裡將會根據你的main.py建立一個main.spec檔案,後面會用到

4. 

 1)我這裡將要打包的py檔案都放到了和main.py相同的資料夾下面,因此analysis這裡面要填的py檔案直接填檔名即可

2)pathex這裡填上你的ceshi資料夾所在的資料夾路徑,記住,路徑必須是全英文的,不然後面可能會有一些模組識別不出來

3)datas這裡填一個資料夾的地址,用來裝你其他的資料夾,如你可以建立一個叫images的資料夾,來裝image圖片;當然,如果沒有這個需求,可以為空,我這裡就是為空;

4)hiddenimports填上缺失的模組。至於怎麼發現缺失的模組,後面講

5.所有的都填好了之後,執行命令pyinstaller main.spec

6.

生成的main.exe 就在dist這個資料夾裡面(這裡需要注意的是,由於程式結束很快,exe檔案往往一閃而過,因此你不清楚是否你的程式真的可以執行,因此這裡我們需要用到windows powershell,這個到底怎麼安裝,谷歌吧)

用windows powershell cd 到main.exe所在目錄,然後./main.exe執行即可

這裡需要注意的是,也許你會遇到no module named ‘ceshi’ 這個問題(這個問題困擾了我好久,用windows powershell檢測出來的)

,因為你要匯入自定義的ceshi包,但是pyinstaller是沒法識別這個包,因此你在寫py檔案的時候,不能from ceshi import a1這樣匯入a1,只能import a1來實現a1包的匯入

7.額外要說明的是 ,你需要把你的main.py寫的足夠簡潔,因為最起始的打包位置是從它開始的,也就是相當於c中的int main,他是pyinstaller的程式入口