前言 做了個python的小項目,需要打包為桌面端的exe使用,結果一打包,體積直接上百兆了,研究了下,使用虛擬環境打出的包會更乾凈小巧。 安裝anaconda(用作python的虛擬環境管理工具) 安裝:https://repo.anaconda.com/archive/Anaconda3-202 ...
前言
做了個python的小項目,需要打包為桌面端的exe使用,結果一打包,體積直接上百兆了,研究了下,使用虛擬環境打出的包會更乾凈小巧。
安裝anaconda(用作python的虛擬環境管理工具)
-
安裝:https://repo.anaconda.com/archive/Anaconda3-2023.03-Windows-x86_64.exe
-
配置anaconda環境變數
win+i 搜索“高級系統設置”,打開
點擊環境變數
雙擊系統變數中的Path
依次添加系統環境變數(需視anaconda安裝目錄而定):
D:\anaconda
D:\anaconda\Library\mingw-w64\bin
D:\anaconda\Library\usr\bin
D:\anaconda\Library\bin
D:\anaconda\Scripts
-
依次返回確定保存
創建anaconda虛擬環境
-
打開anaconda prompt
-
創建anaconda虛擬環境:conda create -n env_1 python==3.7.9(可自行選擇版本)
-
驗證是否創建成功:python -V
-
常用anaconda命令:
導出虛擬環境的列表:conda env list
導出當前環境的包:conda list
啟動/切換至名為name的Python環境:conda activate name
退出虛擬環境:conda deactivate
刪除虛擬環境:conda remove -n 環境名 --all -
在虛擬環境中安裝python打包工具pyinstaller,以及其他自己在項目中使用到的包:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller(國內使用清華源較快)
vscode選擇python解釋器
-
打開vscode,按下ctrl+shift+p
-
輸入:Python: Select Interpreter,點擊出現的選項
-
點擊:輸入解釋器路徑-查找
-
確認選中anaconda安裝路徑下剛生成的虛擬環境的python.exe文件
設置vscode預設終端為cmd
-
點擊選擇預設配置文件
-
點擊選中Command Prompt
-
關閉vscode,重新使用vscode打開項目,按下shift+ctrl+` ,查看是否使用cmd切換為了虛擬環境
生成spec文件
-
spec文件就是pyinstaller打包時的配置文件(語法為python語法),控制台輸入命令:pyi-makespec -F -w main.py(main為生成的spec文件的文件名)
-
編輯spec文件
# -*- mode: python ; coding: utf-8 -*-
def getExeName(): # 獲取名字與版本
import config
return config.name + '-' + config.version
block_cipher = None
a = Analysis(
['main.py'], # 需要打包的py文件
pathex=[],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name=getExeName(), # 打包後的名字
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False, # 雙擊exe是否顯示cmd視窗
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
icon='./img/icon.ico' # 打包的exe圖標
)
Analysis第一個參數為列表,列表中元素為需要打包的py文件,可自行添加刪除,EXE為打包的exe信息,可在此處修改exe的名字、圖標等。圖標必須為ico格式圖片,這裡提供一個圖片格式轉換網站:https://onlineconvertfree.com/zh/convert/svg/ 。
利用spec配置打包
-
spec文件編輯完成後輸入命令:Pyinstaller main.spec(main.spec為剛纔生成的配置文件名)
-
出現下圖即為打包成功,在項目的根目錄下會生成dist目錄,裡面即為打包出的exe文件:
原文鏈接:https://xiblogs.top/?id=57