python一般不建議打包倦蚪,基本上都是命令行運行赦颇,如果實在要打包python3可以用pyinstaller
請使用官方原版python打包=嬗瘛!硬耍!
Anaconda里內(nèi)置了很多庫,打包的時候打包了很多不必要的模塊進去边酒。
注意打包出來文件會非常大(原理就是簡單粗暴直接把所有包都封裝進去了)
比如8KB的程序打包后是292 MB经柴。。墩朦。坯认。。(看個人情況導入的包越多越大)
然后建議用pipenv搭建虛擬環(huán)境后打包氓涣。
#建立虛擬環(huán)境
pipenv install
#進入虛擬環(huán)境
pipenv shell
#安裝模塊
pip install 小工具.py里面用到的模塊
#打包的模塊也要安裝
pip install pyinstaller
#開始打包
pyinstaller -Fw E:\test\url_crawler.py
這是不用虛擬環(huán)境打包的方法
首先安裝2個庫
pip install pyinstaller
pip install pywin32
或者去下載pywin32的exe安裝包注意要和自己的python版本兼容
pyinstaller -F demo.py?
參數(shù)含義
-F指定打包后只生成一個exe格式的文件
-D–onedir 創(chuàng)建一個目錄牛哺,包含exe文件,但會依賴很多文件(默認選項)
-c–console, –nowindowed 使用控制臺劳吠,無界面(默認)
-w–windowed, –noconsole 使用窗口引润,無控制臺
-p添加搜索路徑,讓其找到對應的庫痒玩。
-i改變生成程序的icon圖標
打包成功后同一目錄下會出現(xiàn)dist,build,demo.spec 三個文件
打包好的exe文件在dist目錄里面(其他都可以刪了)
問題1:RecursionError: maximum recursion depth exceeded
?這是迭代數(shù)過高python默認為900淳附,在demo.spec 文件頭地二行添加下面語句
import sys
sys.setrecursionlimit(5000)
刪除dist,build文件夾 然后cmd命令行執(zhí)行解決
pyinstaller?demo.spec
問題2:Exception: Cannot find existing PyQt5 plugin directories Paths checked: C:/qt5b/qt_1524647842210/_h_env/Library/plugins
手動新建上面的文件夾目錄把pyqt5.dll,pyqt5qmlplugin.dll 兩個文件放進去
每個人的報錯路徑都不一樣請看自己的路徑是什么蠢古,其實用-p 選項也應該能指定包路徑的我沒研究
刪除dist,build文件夾 然后重新執(zhí)行打包程序
pyinstaller? demo.spec
參考連接
https://www.zhihu.com/question/268397385/answer/611317903