使用pyinstaller打包一個多文件的項目,主函數的main.py
文件結構大概如下:
--code_1
? ----aa.py
--code_2
? ----bb.py
main.py
這里要將pyinstaller打包成一個exe,而且是單一的exe文件。
pyinstaller 的各個參數可以參考官方文檔:https://pyinstaller.readthedocs.io/en/v3.3.1/usage.html
本文主要記錄幾個注意點:
1. 搭建好虛擬環境
如果你項目的環境是你的基礎環境(base),那么可能會出現把本項目不需要的包依賴全部打包進去,導致最后生成的exe文件很大。所以建議要確保虛擬環境的正確性,盡量不要加載多余的包,畢竟,少一個包就少一個報錯的隱患。
2. 多文件py問題
考慮到除主函數之外的py文件依賴的包會找不到,所以在打包時也要把這個問題解決好,目前網上找到兩種方法,一種是先生成.spec文件,在.spec文件中修改后再繼續打包,另一種是直接命令行生成exe,這里推薦第二種:
```
pyinstaller -p code_1的絕對路徑;code_2的絕對路徑 -F main.py
```
第二種方法的好處個人覺得首先他不需要對每個py文件進行列舉,第二就是一次性一條命令解決問題,比較方便快速
3. No time zone found with key UTC
報這個錯可能是你安裝某些包時時區被你弄錯了,建議先別急著按照其他帖說的修改源碼等操作,可以試著重新安裝虛擬環境,把所有包都重裝下,我是最后沒辦法,重裝了就好了。
4.某個包找不到問題
在打包過程中,命令行可能就會出現這些問題,但是一切要以執行exe為準,如果exe執行正常,那說明用不到那個模板,可以不用管,如果真的強迫癥的話,可以加上hidden命令,詳細去官網找。