[{"data":1,"prerenderedAt":2739},["ShallowReactive",2],{"post-2026-02-25-pyinstaller-guide":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"tags":11,"body":15,"_type":2733,"_id":2734,"_source":2735,"_file":2736,"_stem":2737,"_extension":2738},"\u002Fblog\u002F2026-02-25-pyinstaller-guide","blog",false,"","PyInstaller 打包教程","PyInstaller 完整教程，将Python脚本打包为独立exe，涵盖参数详解、spec文件配置、常见问题与解决方案。","2026-02-25",[12,13,14],"Python","打包","工具",{"type":16,"children":17,"toc":2708},"root",[18,26,33,37,51,83,88,109,114,120,123,128,157,162,189,202,208,211,218,237,242,265,288,300,317,328,351,374,379,385,409,414,442,466,475,503,509,526,531,563,584,601,606,614,646,654,685,691,701,706,738,748,753,785,812,824,878,886,918,984,992,1023,1076,1093,1104,1179,1186,1218,1267,1273,1283,1288,1315,1325,1330,1357,1367,1372,1399,1409,1414,1441,1451,1456,1483,1500,1505,1532,1538,1543,1563,1576,1844,1849,1868,1874,1879,1893,1898,1912,1917,2019,2025,2028,2034,2047,2074,2080,2085,2107,2234,2240,2244,2252,2278,2286,2318,2326,2332,2336,2351,2379,2387,2393,2396,2402,2442,2448,2500,2506,2514,2558,2566,2675,2683,2702],{"type":19,"tag":20,"props":21,"children":22},"element","p",{},[23],{"type":24,"value":25},"text","PyInstaller 是一个非常实用的 Python 打包工具，能够将 Python 脚本打包成独立的可执行文件，无需用户安装 Python 解释器即可运行。本教程将详细介绍 PyInstaller 的使用方法和各种参数。",{"type":19,"tag":27,"props":28,"children":30},"h2",{"id":29},"一安装-pyinstaller",[31],{"type":24,"value":32},"一、安装 PyInstaller",{"type":19,"tag":34,"props":35,"children":36},"hr",{},[],{"type":19,"tag":20,"props":38,"children":39},{},[40,42,49],{"type":24,"value":41},"首先需要安装 PyInstaller 包，使用 ",{"type":19,"tag":43,"props":44,"children":46},"code",{"className":45},[],[47],{"type":24,"value":48},"pip",{"type":24,"value":50}," 命令即可：",{"type":19,"tag":52,"props":53,"children":57},"pre",{"className":54,"code":55,"language":56,"meta":7,"style":7},"language-bash shiki shiki-themes github-dark","pip install pyinstaller\n","bash",[58],{"type":19,"tag":43,"props":59,"children":60},{"__ignoreMap":7},[61],{"type":19,"tag":62,"props":63,"children":66},"span",{"class":64,"line":65},"line",1,[67,72,78],{"type":19,"tag":62,"props":68,"children":70},{"style":69},"--shiki-default:#B392F0",[71],{"type":24,"value":48},{"type":19,"tag":62,"props":73,"children":75},{"style":74},"--shiki-default:#9ECBFF",[76],{"type":24,"value":77}," install",{"type":19,"tag":62,"props":79,"children":80},{"style":74},[81],{"type":24,"value":82}," pyinstaller\n",{"type":19,"tag":20,"props":84,"children":85},{},[86],{"type":24,"value":87},"验证安装是否成功：",{"type":19,"tag":52,"props":89,"children":91},{"className":54,"code":90,"language":56,"meta":7,"style":7},"pyinstaller --version\n",[92],{"type":19,"tag":43,"props":93,"children":94},{"__ignoreMap":7},[95],{"type":19,"tag":62,"props":96,"children":97},{"class":64,"line":65},[98,103],{"type":19,"tag":62,"props":99,"children":100},{"style":69},[101],{"type":24,"value":102},"pyinstaller",{"type":19,"tag":62,"props":104,"children":106},{"style":105},"--shiki-default:#79B8FF",[107],{"type":24,"value":108}," --version\n",{"type":19,"tag":20,"props":110,"children":111},{},[112],{"type":24,"value":113},"如果成功安装，会显示当前 PyInstaller 的版本号。",{"type":19,"tag":27,"props":115,"children":117},{"id":116},"二基本使用方法",[118],{"type":24,"value":119},"二、基本使用方法",{"type":19,"tag":34,"props":121,"children":122},{},[],{"type":19,"tag":20,"props":124,"children":125},{},[126],{"type":24,"value":127},"最基本的打包命令非常简单，在命令行中进入脚本所在目录，执行：",{"type":19,"tag":52,"props":129,"children":131},{"className":54,"code":130,"language":56,"meta":7,"style":7},"# 此处的your_script.py替换为要打包的脚本文件\npyinstaller your_script.py\n",[132],{"type":19,"tag":43,"props":133,"children":134},{"__ignoreMap":7},[135,144],{"type":19,"tag":62,"props":136,"children":137},{"class":64,"line":65},[138],{"type":19,"tag":62,"props":139,"children":141},{"style":140},"--shiki-default:#6A737D",[142],{"type":24,"value":143},"# 此处的your_script.py替换为要打包的脚本文件\n",{"type":19,"tag":62,"props":145,"children":147},{"class":64,"line":146},2,[148,152],{"type":19,"tag":62,"props":149,"children":150},{"style":69},[151],{"type":24,"value":102},{"type":19,"tag":62,"props":153,"children":154},{"style":74},[155],{"type":24,"value":156}," your_script.py\n",{"type":19,"tag":20,"props":158,"children":159},{},[160],{"type":24,"value":161},"这个命令会在当前目录生成两个文件夹：",{"type":19,"tag":163,"props":164,"children":165},"ul",{},[166,178],{"type":19,"tag":167,"props":168,"children":169},"li",{},[170,176],{"type":19,"tag":43,"props":171,"children":173},{"className":172},[],[174],{"type":24,"value":175},"dist",{"type":24,"value":177},"：包含可执行文件和相关依赖",{"type":19,"tag":167,"props":179,"children":180},{},[181,187],{"type":19,"tag":43,"props":182,"children":184},{"className":183},[],[185],{"type":24,"value":186},"build",{"type":24,"value":188},"：包含打包过程中的临时文件",{"type":19,"tag":20,"props":190,"children":191},{},[192,194,200],{"type":24,"value":193},"同时会生成一个 ",{"type":19,"tag":43,"props":195,"children":197},{"className":196},[],[198],{"type":24,"value":199},".spec",{"type":24,"value":201}," 文件，用于高级打包配置。",{"type":19,"tag":27,"props":203,"children":205},{"id":204},"三常用参数详解",[206],{"type":24,"value":207},"三、常用参数详解",{"type":19,"tag":34,"props":209,"children":210},{},[],{"type":19,"tag":212,"props":213,"children":215},"h3",{"id":214},"_1-输出文件类型控制",[216],{"type":24,"value":217},"1. 输出文件类型控制",{"type":19,"tag":219,"props":220,"children":222},"h4",{"id":221},"f-onefile",[223,229,231],{"type":19,"tag":43,"props":224,"children":226},{"className":225},[],[227],{"type":24,"value":228},"-F",{"type":24,"value":230},", ",{"type":19,"tag":43,"props":232,"children":234},{"className":233},[],[235],{"type":24,"value":236},"--onefile",{"type":19,"tag":20,"props":238,"children":239},{},[240],{"type":24,"value":241},"将所有内容打包成单个可执行文件。示例如下：",{"type":19,"tag":52,"props":243,"children":245},{"className":54,"code":244,"language":56,"meta":7,"style":7},"pyinstaller -F your_script.py\n",[246],{"type":19,"tag":43,"props":247,"children":248},{"__ignoreMap":7},[249],{"type":19,"tag":62,"props":250,"children":251},{"class":64,"line":65},[252,256,261],{"type":19,"tag":62,"props":253,"children":254},{"style":69},[255],{"type":24,"value":102},{"type":19,"tag":62,"props":257,"children":258},{"style":105},[259],{"type":24,"value":260}," -F",{"type":19,"tag":62,"props":262,"children":263},{"style":74},[264],{"type":24,"value":156},{"type":19,"tag":52,"props":266,"children":268},{"className":54,"code":267,"language":56,"meta":7,"style":7},"pyinstaller --onefile your_script.py\n",[269],{"type":19,"tag":43,"props":270,"children":271},{"__ignoreMap":7},[272],{"type":19,"tag":62,"props":273,"children":274},{"class":64,"line":65},[275,279,284],{"type":19,"tag":62,"props":276,"children":277},{"style":69},[278],{"type":24,"value":102},{"type":19,"tag":62,"props":280,"children":281},{"style":105},[282],{"type":24,"value":283}," --onefile",{"type":19,"tag":62,"props":285,"children":286},{"style":74},[287],{"type":24,"value":156},{"type":19,"tag":20,"props":289,"children":290},{},[291,293,298],{"type":24,"value":292},"上述两条指令作用相同。执行后，",{"type":19,"tag":43,"props":294,"children":296},{"className":295},[],[297],{"type":24,"value":175},{"type":24,"value":299}," 目录下只会生成一个可执行文件。",{"type":19,"tag":219,"props":301,"children":303},{"id":302},"d-onedir",[304,310,311],{"type":19,"tag":43,"props":305,"children":307},{"className":306},[],[308],{"type":24,"value":309},"-D",{"type":24,"value":230},{"type":19,"tag":43,"props":312,"children":314},{"className":313},[],[315],{"type":24,"value":316},"--onedir",{"type":19,"tag":20,"props":318,"children":319},{},[320,326],{"type":19,"tag":321,"props":322,"children":323},"strong",{},[324],{"type":24,"value":325},"默认参数",{"type":24,"value":327},"，将程序打包成一个目录（包含可执行文件和相关依赖文件）。示例如下：",{"type":19,"tag":52,"props":329,"children":331},{"className":54,"code":330,"language":56,"meta":7,"style":7},"pyinstaller -D your_script.py\n",[332],{"type":19,"tag":43,"props":333,"children":334},{"__ignoreMap":7},[335],{"type":19,"tag":62,"props":336,"children":337},{"class":64,"line":65},[338,342,347],{"type":19,"tag":62,"props":339,"children":340},{"style":69},[341],{"type":24,"value":102},{"type":19,"tag":62,"props":343,"children":344},{"style":105},[345],{"type":24,"value":346}," -D",{"type":19,"tag":62,"props":348,"children":349},{"style":74},[350],{"type":24,"value":156},{"type":19,"tag":52,"props":352,"children":354},{"className":54,"code":353,"language":56,"meta":7,"style":7},"pyinstaller --onedir your_script.py\n",[355],{"type":19,"tag":43,"props":356,"children":357},{"__ignoreMap":7},[358],{"type":19,"tag":62,"props":359,"children":360},{"class":64,"line":65},[361,365,370],{"type":19,"tag":62,"props":362,"children":363},{"style":69},[364],{"type":24,"value":102},{"type":19,"tag":62,"props":366,"children":367},{"style":105},[368],{"type":24,"value":369}," --onedir",{"type":19,"tag":62,"props":371,"children":372},{"style":74},[373],{"type":24,"value":156},{"type":19,"tag":20,"props":375,"children":376},{},[377],{"type":24,"value":378},"上述两条指令作用相同。",{"type":19,"tag":212,"props":380,"children":382},{"id":381},"_2-窗口设置",[383],{"type":24,"value":384},"2. 窗口设置",{"type":19,"tag":219,"props":386,"children":388},{"id":387},"w-windowed-noconsole",[389,395,396,402,403],{"type":19,"tag":43,"props":390,"children":392},{"className":391},[],[393],{"type":24,"value":394},"-w",{"type":24,"value":230},{"type":19,"tag":43,"props":397,"children":399},{"className":398},[],[400],{"type":24,"value":401},"--windowed",{"type":24,"value":230},{"type":19,"tag":43,"props":404,"children":406},{"className":405},[],[407],{"type":24,"value":408},"--noconsole",{"type":19,"tag":20,"props":410,"children":411},{},[412],{"type":24,"value":413},"打包成窗口程序，不显示控制台窗口（适用于 GUI 程序）。示例如下（Tkinter 程序）：",{"type":19,"tag":52,"props":415,"children":417},{"className":54,"code":416,"language":56,"meta":7,"style":7},"pyinstaller -w -F your_gui_app.py\n",[418],{"type":19,"tag":43,"props":419,"children":420},{"__ignoreMap":7},[421],{"type":19,"tag":62,"props":422,"children":423},{"class":64,"line":65},[424,428,433,437],{"type":19,"tag":62,"props":425,"children":426},{"style":69},[427],{"type":24,"value":102},{"type":19,"tag":62,"props":429,"children":430},{"style":105},[431],{"type":24,"value":432}," -w",{"type":19,"tag":62,"props":434,"children":435},{"style":105},[436],{"type":24,"value":260},{"type":19,"tag":62,"props":438,"children":439},{"style":74},[440],{"type":24,"value":441}," your_gui_app.py\n",{"type":19,"tag":219,"props":443,"children":445},{"id":444},"c-console-nowindowed",[446,452,453,459,460],{"type":19,"tag":43,"props":447,"children":449},{"className":448},[],[450],{"type":24,"value":451},"-c",{"type":24,"value":230},{"type":19,"tag":43,"props":454,"children":456},{"className":455},[],[457],{"type":24,"value":458},"--console",{"type":24,"value":230},{"type":19,"tag":43,"props":461,"children":463},{"className":462},[],[464],{"type":24,"value":465},"--nowindowed",{"type":19,"tag":20,"props":467,"children":468},{},[469,473],{"type":19,"tag":321,"props":470,"children":471},{},[472],{"type":24,"value":325},{"type":24,"value":474},"，显示控制台窗口（适用于命令行程序）。示例如下：",{"type":19,"tag":52,"props":476,"children":478},{"className":54,"code":477,"language":56,"meta":7,"style":7},"pyinstaller -c -F your_cli_tool.py\n",[479],{"type":19,"tag":43,"props":480,"children":481},{"__ignoreMap":7},[482],{"type":19,"tag":62,"props":483,"children":484},{"class":64,"line":65},[485,489,494,498],{"type":19,"tag":62,"props":486,"children":487},{"style":69},[488],{"type":24,"value":102},{"type":19,"tag":62,"props":490,"children":491},{"style":105},[492],{"type":24,"value":493}," -c",{"type":19,"tag":62,"props":495,"children":496},{"style":105},[497],{"type":24,"value":260},{"type":19,"tag":62,"props":499,"children":500},{"style":74},[501],{"type":24,"value":502}," your_cli_tool.py\n",{"type":19,"tag":212,"props":504,"children":506},{"id":505},"_3-输出文件信息设置",[507],{"type":24,"value":508},"3. 输出文件信息设置",{"type":19,"tag":219,"props":510,"children":512},{"id":511},"n-name-namename",[513,519,520],{"type":19,"tag":43,"props":514,"children":516},{"className":515},[],[517],{"type":24,"value":518},"-n NAME",{"type":24,"value":230},{"type":19,"tag":43,"props":521,"children":523},{"className":522},[],[524],{"type":24,"value":525},"--name=NAME",{"type":19,"tag":20,"props":527,"children":528},{},[529],{"type":24,"value":530},"指定输出文件的名称。示例：",{"type":19,"tag":52,"props":532,"children":534},{"className":54,"code":533,"language":56,"meta":7,"style":7},"pyinstaller -F -n YourApplication your_script.py\n",[535],{"type":19,"tag":43,"props":536,"children":537},{"__ignoreMap":7},[538],{"type":19,"tag":62,"props":539,"children":540},{"class":64,"line":65},[541,545,549,554,559],{"type":19,"tag":62,"props":542,"children":543},{"style":69},[544],{"type":24,"value":102},{"type":19,"tag":62,"props":546,"children":547},{"style":105},[548],{"type":24,"value":260},{"type":19,"tag":62,"props":550,"children":551},{"style":105},[552],{"type":24,"value":553}," -n",{"type":19,"tag":62,"props":555,"children":556},{"style":74},[557],{"type":24,"value":558}," YourApplication",{"type":19,"tag":62,"props":560,"children":561},{"style":74},[562],{"type":24,"value":156},{"type":19,"tag":20,"props":564,"children":565},{},[566,568,574,576,582],{"type":24,"value":567},"这样生成的可执行文件名称为 ",{"type":19,"tag":43,"props":569,"children":571},{"className":570},[],[572],{"type":24,"value":573},"YourApplication",{"type":24,"value":575},"（Windows 下为 ",{"type":19,"tag":43,"props":577,"children":579},{"className":578},[],[580],{"type":24,"value":581},"YourApplication.exe",{"type":24,"value":583},"）",{"type":19,"tag":219,"props":585,"children":587},{"id":586},"i-icon-iconicon",[588,594,595],{"type":19,"tag":43,"props":589,"children":591},{"className":590},[],[592],{"type":24,"value":593},"-i ICON",{"type":24,"value":230},{"type":19,"tag":43,"props":596,"children":598},{"className":597},[],[599],{"type":24,"value":600},"--icon=ICON",{"type":19,"tag":20,"props":602,"children":603},{},[604],{"type":24,"value":605},"指定程序图标。",{"type":19,"tag":20,"props":607,"children":608},{},[609],{"type":19,"tag":321,"props":610,"children":611},{},[612],{"type":24,"value":613},"示例（Windows）：",{"type":19,"tag":52,"props":615,"children":617},{"className":54,"code":616,"language":56,"meta":7,"style":7},"pyinstaller -F -i app_icon.ico your_script.py\n",[618],{"type":19,"tag":43,"props":619,"children":620},{"__ignoreMap":7},[621],{"type":19,"tag":62,"props":622,"children":623},{"class":64,"line":65},[624,628,632,637,642],{"type":19,"tag":62,"props":625,"children":626},{"style":69},[627],{"type":24,"value":102},{"type":19,"tag":62,"props":629,"children":630},{"style":105},[631],{"type":24,"value":260},{"type":19,"tag":62,"props":633,"children":634},{"style":105},[635],{"type":24,"value":636}," -i",{"type":19,"tag":62,"props":638,"children":639},{"style":74},[640],{"type":24,"value":641}," app_icon.ico",{"type":19,"tag":62,"props":643,"children":644},{"style":74},[645],{"type":24,"value":156},{"type":19,"tag":20,"props":647,"children":648},{},[649],{"type":19,"tag":321,"props":650,"children":651},{},[652],{"type":24,"value":653},"示例（MacOS）：",{"type":19,"tag":52,"props":655,"children":657},{"className":54,"code":656,"language":56,"meta":7,"style":7},"pyinstaller -F -i app_icon.icns your_script.py\n",[658],{"type":19,"tag":43,"props":659,"children":660},{"__ignoreMap":7},[661],{"type":19,"tag":62,"props":662,"children":663},{"class":64,"line":65},[664,668,672,676,681],{"type":19,"tag":62,"props":665,"children":666},{"style":69},[667],{"type":24,"value":102},{"type":19,"tag":62,"props":669,"children":670},{"style":105},[671],{"type":24,"value":260},{"type":19,"tag":62,"props":673,"children":674},{"style":105},[675],{"type":24,"value":636},{"type":19,"tag":62,"props":677,"children":678},{"style":74},[679],{"type":24,"value":680}," app_icon.icns",{"type":19,"tag":62,"props":682,"children":683},{"style":74},[684],{"type":24,"value":156},{"type":19,"tag":212,"props":686,"children":688},{"id":687},"_4-路径和导入设置",[689],{"type":24,"value":690},"4. 路径和导入设置",{"type":19,"tag":219,"props":692,"children":694},{"id":693},"pathsdirs",[695],{"type":19,"tag":43,"props":696,"children":698},{"className":697},[],[699],{"type":24,"value":700},"--paths=DIRS",{"type":19,"tag":20,"props":702,"children":703},{},[704],{"type":24,"value":705},"添加 Python 模块的搜索路径。示例如下：",{"type":19,"tag":52,"props":707,"children":709},{"className":54,"code":708,"language":56,"meta":7,"style":7},"pyinstaller -F --paths=.\u002Flibs --paths=.\u002Fmodules your_script.py\n",[710],{"type":19,"tag":43,"props":711,"children":712},{"__ignoreMap":7},[713],{"type":19,"tag":62,"props":714,"children":715},{"class":64,"line":65},[716,720,724,729,734],{"type":19,"tag":62,"props":717,"children":718},{"style":69},[719],{"type":24,"value":102},{"type":19,"tag":62,"props":721,"children":722},{"style":105},[723],{"type":24,"value":260},{"type":19,"tag":62,"props":725,"children":726},{"style":105},[727],{"type":24,"value":728}," --paths=.\u002Flibs",{"type":19,"tag":62,"props":730,"children":731},{"style":105},[732],{"type":24,"value":733}," --paths=.\u002Fmodules",{"type":19,"tag":62,"props":735,"children":736},{"style":74},[737],{"type":24,"value":156},{"type":19,"tag":219,"props":739,"children":741},{"id":740},"hidden-importmodulename",[742],{"type":19,"tag":43,"props":743,"children":745},{"className":744},[],[746],{"type":24,"value":747},"--hidden-import=MODULENAME",{"type":19,"tag":20,"props":749,"children":750},{},[751],{"type":24,"value":752},"指定隐藏的导入模块（当 PyInstaller 自动检测不到某些依赖时使用）。示例如下：",{"type":19,"tag":52,"props":754,"children":756},{"className":54,"code":755,"language":56,"meta":7,"style":7},"pyinstaller -F --hidden-import=requests --hidden-import=beautifulsoup4 your_script.py\n",[757],{"type":19,"tag":43,"props":758,"children":759},{"__ignoreMap":7},[760],{"type":19,"tag":62,"props":761,"children":762},{"class":64,"line":65},[763,767,771,776,781],{"type":19,"tag":62,"props":764,"children":765},{"style":69},[766],{"type":24,"value":102},{"type":19,"tag":62,"props":768,"children":769},{"style":105},[770],{"type":24,"value":260},{"type":19,"tag":62,"props":772,"children":773},{"style":105},[774],{"type":24,"value":775}," --hidden-import=requests",{"type":19,"tag":62,"props":777,"children":778},{"style":105},[779],{"type":24,"value":780}," --hidden-import=beautifulsoup4",{"type":19,"tag":62,"props":782,"children":783},{"style":74},[784],{"type":24,"value":156},{"type":19,"tag":219,"props":786,"children":788},{"id":787},"collect-datamodule-add-datasrcdst-windows-add-datasrcdst-linuxmacos",[789,795,796,802,804,810],{"type":19,"tag":43,"props":790,"children":792},{"className":791},[],[793],{"type":24,"value":794},"--collect-data=MODULE",{"type":24,"value":230},{"type":19,"tag":43,"props":797,"children":799},{"className":798},[],[800],{"type":24,"value":801},"--add-data=SRC;DST",{"type":24,"value":803}," (Windows), ",{"type":19,"tag":43,"props":805,"children":807},{"className":806},[],[808],{"type":24,"value":809},"--add-data=SRC:DST",{"type":24,"value":811}," (Linux\u002FMacOS)",{"type":19,"tag":20,"props":813,"children":814},{},[815,817,822],{"type":24,"value":816},"添加非 Python 文件（如数据文件、配置文件等）。",{"type":19,"tag":321,"props":818,"children":819},{},[820],{"type":24,"value":821},"参数详情",{"type":24,"value":823},"：",{"type":19,"tag":163,"props":825,"children":826},{},[827,845],{"type":19,"tag":167,"props":828,"children":829},{},[830,835,837,843],{"type":19,"tag":43,"props":831,"children":833},{"className":832},[],[834],{"type":24,"value":794},{"type":24,"value":836},"：这个选项用于收集指定模块的所有数据文件 。",{"type":19,"tag":43,"props":838,"children":840},{"className":839},[],[841],{"type":24,"value":842},"MODULE",{"type":24,"value":844}," 代表你想要收集数据文件的模块名称。",{"type":19,"tag":167,"props":846,"children":847},{},[848,853,855,860,862,868,870,876],{"type":19,"tag":43,"props":849,"children":851},{"className":850},[],[852],{"type":24,"value":809},{"type":24,"value":854},"（在 Windows 系统上）和 ",{"type":19,"tag":43,"props":856,"children":858},{"className":857},[],[859],{"type":24,"value":809},{"type":24,"value":861},"（在 Linux\u002FMacOS 系统上）：这是用于添加自定义非 Python 文件的语法。",{"type":19,"tag":43,"props":863,"children":865},{"className":864},[],[866],{"type":24,"value":867},"SRC",{"type":24,"value":869}," 表示源文件或源目录路径，",{"type":19,"tag":43,"props":871,"children":873},{"className":872},[],[874],{"type":24,"value":875},"DST",{"type":24,"value":877}," 表示在打包后的可执行文件中目标文件或目录的路径。",{"type":19,"tag":20,"props":879,"children":880},{},[881],{"type":19,"tag":321,"props":882,"children":883},{},[884],{"type":24,"value":885},"Windows 示例：",{"type":19,"tag":52,"props":887,"children":889},{"className":54,"code":888,"language":56,"meta":7,"style":7},"pyinstaller -F --add-data=\"data\u002F*;data\" your_script.py\n",[890],{"type":19,"tag":43,"props":891,"children":892},{"__ignoreMap":7},[893],{"type":19,"tag":62,"props":894,"children":895},{"class":64,"line":65},[896,900,904,909,914],{"type":19,"tag":62,"props":897,"children":898},{"style":69},[899],{"type":24,"value":102},{"type":19,"tag":62,"props":901,"children":902},{"style":105},[903],{"type":24,"value":260},{"type":19,"tag":62,"props":905,"children":906},{"style":105},[907],{"type":24,"value":908}," --add-data=",{"type":19,"tag":62,"props":910,"children":911},{"style":74},[912],{"type":24,"value":913},"\"data\u002F*;data\"",{"type":19,"tag":62,"props":915,"children":916},{"style":74},[917],{"type":24,"value":156},{"type":19,"tag":163,"props":919,"children":920},{},[921,931,973],{"type":19,"tag":167,"props":922,"children":923},{},[924,929],{"type":19,"tag":43,"props":925,"children":927},{"className":926},[],[928],{"type":24,"value":228},{"type":24,"value":930}," 选项表示生成单个可执行文件。",{"type":19,"tag":167,"props":932,"children":933},{},[934,940,942,948,950,956,958,964,966,971],{"type":19,"tag":43,"props":935,"children":937},{"className":936},[],[938],{"type":24,"value":939},"--add-data=\"data\u002F*;data\"",{"type":24,"value":941}," 表示将 ",{"type":19,"tag":43,"props":943,"children":945},{"className":944},[],[946],{"type":24,"value":947},"data",{"type":24,"value":949}," 目录下的所有文件（",{"type":19,"tag":43,"props":951,"children":953},{"className":952},[],[954],{"type":24,"value":955},"data\u002F*",{"type":24,"value":957}," 中的 ",{"type":19,"tag":43,"props":959,"children":961},{"className":960},[],[962],{"type":24,"value":963},"*",{"type":24,"value":965}," 是通配符，代表所有文件）添加到打包后的可执行文件中的 ",{"type":19,"tag":43,"props":967,"children":969},{"className":968},[],[970],{"type":24,"value":947},{"type":24,"value":972}," 目录下。",{"type":19,"tag":167,"props":974,"children":975},{},[976,982],{"type":19,"tag":43,"props":977,"children":979},{"className":978},[],[980],{"type":24,"value":981},"your_script.py",{"type":24,"value":983}," 是你要打包的 Python 脚本文件名。",{"type":19,"tag":20,"props":985,"children":986},{},[987],{"type":19,"tag":321,"props":988,"children":989},{},[990],{"type":24,"value":991},"Linux\u002FMacOS 示例：",{"type":19,"tag":52,"props":993,"children":995},{"className":54,"code":994,"language":56,"meta":7,"style":7},"pyinstaller -F --add-data=\"data\u002F*:data\" your_script.py\n",[996],{"type":19,"tag":43,"props":997,"children":998},{"__ignoreMap":7},[999],{"type":19,"tag":62,"props":1000,"children":1001},{"class":64,"line":65},[1002,1006,1010,1014,1019],{"type":19,"tag":62,"props":1003,"children":1004},{"style":69},[1005],{"type":24,"value":102},{"type":19,"tag":62,"props":1007,"children":1008},{"style":105},[1009],{"type":24,"value":260},{"type":19,"tag":62,"props":1011,"children":1012},{"style":105},[1013],{"type":24,"value":908},{"type":19,"tag":62,"props":1015,"children":1016},{"style":74},[1017],{"type":24,"value":1018},"\"data\u002F*:data\"",{"type":19,"tag":62,"props":1020,"children":1021},{"style":74},[1022],{"type":24,"value":156},{"type":19,"tag":163,"props":1024,"children":1025},{},[1026,1036],{"type":19,"tag":167,"props":1027,"children":1028},{},[1029,1034],{"type":19,"tag":43,"props":1030,"children":1032},{"className":1031},[],[1033],{"type":24,"value":228},{"type":24,"value":1035}," 是生成单个可执行文件。",{"type":19,"tag":167,"props":1037,"children":1038},{},[1039,1045,1047,1053,1055,1060,1062,1067,1069,1074],{"type":19,"tag":43,"props":1040,"children":1042},{"className":1041},[],[1043],{"type":24,"value":1044},"--add-data=\"data\u002F*:data\"",{"type":24,"value":1046}," 这里用 ",{"type":19,"tag":43,"props":1048,"children":1050},{"className":1049},[],[1051],{"type":24,"value":1052},":",{"type":24,"value":1054}," 分隔，含义和 Windows 示例类似，即将 ",{"type":19,"tag":43,"props":1056,"children":1058},{"className":1057},[],[1059],{"type":24,"value":947},{"type":24,"value":1061}," 目录下的所有文件添加到打包后的可执行文件中的 ",{"type":19,"tag":43,"props":1063,"children":1065},{"className":1064},[],[1066],{"type":24,"value":947},{"type":24,"value":1068}," 目录下，",{"type":19,"tag":43,"props":1070,"children":1072},{"className":1071},[],[1073],{"type":24,"value":981},{"type":24,"value":1075}," 是待打包的 Python 脚本 。",{"type":19,"tag":219,"props":1077,"children":1079},{"id":1078},"collect-binariesmodule-add-binarysrcdst",[1080,1086,1087],{"type":19,"tag":43,"props":1081,"children":1083},{"className":1082},[],[1084],{"type":24,"value":1085},"--collect-binaries=MODULE",{"type":24,"value":230},{"type":19,"tag":43,"props":1088,"children":1090},{"className":1089},[],[1091],{"type":24,"value":1092},"--add-binary=SRC:DST",{"type":19,"tag":20,"props":1094,"children":1095},{},[1096,1098,1103],{"type":24,"value":1097},"添加二进制文件。",{"type":19,"tag":321,"props":1099,"children":1100},{},[1101],{"type":24,"value":1102},"语法参数说明",{"type":24,"value":823},{"type":19,"tag":163,"props":1105,"children":1106},{},[1107,1132],{"type":19,"tag":167,"props":1108,"children":1109},{},[1110,1115,1117,1123,1125,1130],{"type":19,"tag":43,"props":1111,"children":1113},{"className":1112},[],[1114],{"type":24,"value":1085},{"type":24,"value":1116},"：让 ",{"type":19,"tag":43,"props":1118,"children":1120},{"className":1119},[],[1121],{"type":24,"value":1122},"PyInstaller",{"type":24,"value":1124}," 收集指定 ",{"type":19,"tag":43,"props":1126,"children":1128},{"className":1127},[],[1129],{"type":24,"value":842},{"type":24,"value":1131},"（模块）相关的二进制文件，会自动查找模块关联的二进制依赖并打包 。",{"type":19,"tag":167,"props":1133,"children":1134},{},[1135,1140,1142,1147,1149,1155,1157,1163,1165,1170,1172,1177],{"type":19,"tag":43,"props":1136,"children":1138},{"className":1137},[],[1139],{"type":24,"value":1092},{"type":24,"value":1141},"：手动指定要添加的二进制文件，",{"type":19,"tag":43,"props":1143,"children":1145},{"className":1144},[],[1146],{"type":24,"value":867},{"type":24,"value":1148}," 是源路径（可含通配符，像示例里 ",{"type":19,"tag":43,"props":1150,"children":1152},{"className":1151},[],[1153],{"type":24,"value":1154},"libs\u002F*.dll",{"type":24,"value":1156}," 匹配 ",{"type":19,"tag":43,"props":1158,"children":1160},{"className":1159},[],[1161],{"type":24,"value":1162},"libs",{"type":24,"value":1164}," 目录下所有 DLL 文件 ），",{"type":19,"tag":43,"props":1166,"children":1168},{"className":1167},[],[1169],{"type":24,"value":875},{"type":24,"value":1171}," 是打包后这些文件存放的目录（示例中是 ",{"type":19,"tag":43,"props":1173,"children":1175},{"className":1174},[],[1176],{"type":24,"value":1162},{"type":24,"value":1178}," ，即保持相对路径结构 ）。",{"type":19,"tag":20,"props":1180,"children":1181},{},[1182],{"type":19,"tag":321,"props":1183,"children":1184},{},[1185],{"type":24,"value":885},{"type":19,"tag":52,"props":1187,"children":1189},{"className":54,"code":1188,"language":56,"meta":7,"style":7},"pyinstaller -F --add-binary=\"libs\u002F*.dll;libs\" your_script.py\n",[1190],{"type":19,"tag":43,"props":1191,"children":1192},{"__ignoreMap":7},[1193],{"type":19,"tag":62,"props":1194,"children":1195},{"class":64,"line":65},[1196,1200,1204,1209,1214],{"type":19,"tag":62,"props":1197,"children":1198},{"style":69},[1199],{"type":24,"value":102},{"type":19,"tag":62,"props":1201,"children":1202},{"style":105},[1203],{"type":24,"value":260},{"type":19,"tag":62,"props":1205,"children":1206},{"style":105},[1207],{"type":24,"value":1208}," --add-binary=",{"type":19,"tag":62,"props":1210,"children":1211},{"style":74},[1212],{"type":24,"value":1213},"\"libs\u002F*.dll;libs\"",{"type":19,"tag":62,"props":1215,"children":1216},{"style":74},[1217],{"type":24,"value":156},{"type":19,"tag":163,"props":1219,"children":1220},{},[1221,1231,1256],{"type":19,"tag":167,"props":1222,"children":1223},{},[1224,1229],{"type":19,"tag":43,"props":1225,"children":1227},{"className":1226},[],[1228],{"type":24,"value":228},{"type":24,"value":1230},"：生成单个可执行文件，把所有依赖打包进一个 EXE 里。",{"type":19,"tag":167,"props":1232,"children":1233},{},[1234,1240,1242,1247,1249,1254],{"type":19,"tag":43,"props":1235,"children":1237},{"className":1236},[],[1238],{"type":24,"value":1239},"--add-binary=\"libs\u002F*.dll;libs\"",{"type":24,"value":1241},"：把 ",{"type":19,"tag":43,"props":1243,"children":1245},{"className":1244},[],[1246],{"type":24,"value":1162},{"type":24,"value":1248}," 目录下所有 DLL 文件，按 ",{"type":19,"tag":43,"props":1250,"children":1252},{"className":1251},[],[1253],{"type":24,"value":1162},{"type":24,"value":1255}," 相对路径结构，添加到打包内容里，程序运行时能找到这些二进制依赖。",{"type":19,"tag":167,"props":1257,"children":1258},{},[1259,1265],{"type":19,"tag":43,"props":1260,"children":1262},{"className":1261},[],[1263],{"type":24,"value":1264},"my_script.py",{"type":24,"value":1266},"：要打包的 Python 脚本入口文件。",{"type":19,"tag":212,"props":1268,"children":1270},{"id":1269},"_5-其他常用参数",[1271],{"type":24,"value":1272},"5. 其他常用参数",{"type":19,"tag":219,"props":1274,"children":1276},{"id":1275},"clean",[1277],{"type":19,"tag":43,"props":1278,"children":1280},{"className":1279},[],[1281],{"type":24,"value":1282},"--clean",{"type":19,"tag":20,"props":1284,"children":1285},{},[1286],{"type":24,"value":1287},"在构建之前清理临时文件。示例如下：",{"type":19,"tag":52,"props":1289,"children":1291},{"className":54,"code":1290,"language":56,"meta":7,"style":7},"pyinstaller --clean -F your_script.py\n",[1292],{"type":19,"tag":43,"props":1293,"children":1294},{"__ignoreMap":7},[1295],{"type":19,"tag":62,"props":1296,"children":1297},{"class":64,"line":65},[1298,1302,1307,1311],{"type":19,"tag":62,"props":1299,"children":1300},{"style":69},[1301],{"type":24,"value":102},{"type":19,"tag":62,"props":1303,"children":1304},{"style":105},[1305],{"type":24,"value":1306}," --clean",{"type":19,"tag":62,"props":1308,"children":1309},{"style":105},[1310],{"type":24,"value":260},{"type":19,"tag":62,"props":1312,"children":1313},{"style":74},[1314],{"type":24,"value":156},{"type":19,"tag":219,"props":1316,"children":1318},{"id":1317},"debug",[1319],{"type":19,"tag":43,"props":1320,"children":1322},{"className":1321},[],[1323],{"type":24,"value":1324},"--debug",{"type":19,"tag":20,"props":1326,"children":1327},{},[1328],{"type":24,"value":1329},"生成调试版本，包含调试信息。示例如下：",{"type":19,"tag":52,"props":1331,"children":1333},{"className":54,"code":1332,"language":56,"meta":7,"style":7},"pyinstaller --debug -F your_script.py\n",[1334],{"type":19,"tag":43,"props":1335,"children":1336},{"__ignoreMap":7},[1337],{"type":19,"tag":62,"props":1338,"children":1339},{"class":64,"line":65},[1340,1344,1349,1353],{"type":19,"tag":62,"props":1341,"children":1342},{"style":69},[1343],{"type":24,"value":102},{"type":19,"tag":62,"props":1345,"children":1346},{"style":105},[1347],{"type":24,"value":1348}," --debug",{"type":19,"tag":62,"props":1350,"children":1351},{"style":105},[1352],{"type":24,"value":260},{"type":19,"tag":62,"props":1354,"children":1355},{"style":74},[1356],{"type":24,"value":156},{"type":19,"tag":219,"props":1358,"children":1360},{"id":1359},"version-filefile",[1361],{"type":19,"tag":43,"props":1362,"children":1364},{"className":1363},[],[1365],{"type":24,"value":1366},"--version-file=FILE",{"type":19,"tag":20,"props":1368,"children":1369},{},[1370],{"type":24,"value":1371},"添加版本信息文件。示例如下：",{"type":19,"tag":52,"props":1373,"children":1375},{"className":54,"code":1374,"language":56,"meta":7,"style":7},"pyinstaller -F --version-file=version_info.txt your_script.py\n",[1376],{"type":19,"tag":43,"props":1377,"children":1378},{"__ignoreMap":7},[1379],{"type":19,"tag":62,"props":1380,"children":1381},{"class":64,"line":65},[1382,1386,1390,1395],{"type":19,"tag":62,"props":1383,"children":1384},{"style":69},[1385],{"type":24,"value":102},{"type":19,"tag":62,"props":1387,"children":1388},{"style":105},[1389],{"type":24,"value":260},{"type":19,"tag":62,"props":1391,"children":1392},{"style":105},[1393],{"type":24,"value":1394}," --version-file=version_info.txt",{"type":19,"tag":62,"props":1396,"children":1397},{"style":74},[1398],{"type":24,"value":156},{"type":19,"tag":219,"props":1400,"children":1402},{"id":1401},"upx-dirdir",[1403],{"type":19,"tag":43,"props":1404,"children":1406},{"className":1405},[],[1407],{"type":24,"value":1408},"--upx-dir=DIR",{"type":19,"tag":20,"props":1410,"children":1411},{},[1412],{"type":24,"value":1413},"指定 UPX 压缩工具的目录（用于压缩可执行文件）。示例如下：",{"type":19,"tag":52,"props":1415,"children":1417},{"className":54,"code":1416,"language":56,"meta":7,"style":7},"pyinstaller -F --upx-dir=.\u002Fupx your_script.py\n",[1418],{"type":19,"tag":43,"props":1419,"children":1420},{"__ignoreMap":7},[1421],{"type":19,"tag":62,"props":1422,"children":1423},{"class":64,"line":65},[1424,1428,1432,1437],{"type":19,"tag":62,"props":1425,"children":1426},{"style":69},[1427],{"type":24,"value":102},{"type":19,"tag":62,"props":1429,"children":1430},{"style":105},[1431],{"type":24,"value":260},{"type":19,"tag":62,"props":1433,"children":1434},{"style":105},[1435],{"type":24,"value":1436}," --upx-dir=.\u002Fupx",{"type":19,"tag":62,"props":1438,"children":1439},{"style":74},[1440],{"type":24,"value":156},{"type":19,"tag":219,"props":1442,"children":1444},{"id":1443},"noupx",[1445],{"type":19,"tag":43,"props":1446,"children":1448},{"className":1447},[],[1449],{"type":24,"value":1450},"--noupx",{"type":19,"tag":20,"props":1452,"children":1453},{},[1454],{"type":24,"value":1455},"禁用 UPX 压缩。示例如下：",{"type":19,"tag":52,"props":1457,"children":1459},{"className":54,"code":1458,"language":56,"meta":7,"style":7},"pyinstaller -F --noupx your_script.py\n",[1460],{"type":19,"tag":43,"props":1461,"children":1462},{"__ignoreMap":7},[1463],{"type":19,"tag":62,"props":1464,"children":1465},{"class":64,"line":65},[1466,1470,1474,1479],{"type":19,"tag":62,"props":1467,"children":1468},{"style":69},[1469],{"type":24,"value":102},{"type":19,"tag":62,"props":1471,"children":1472},{"style":105},[1473],{"type":24,"value":260},{"type":19,"tag":62,"props":1475,"children":1476},{"style":105},[1477],{"type":24,"value":1478}," --noupx",{"type":19,"tag":62,"props":1480,"children":1481},{"style":74},[1482],{"type":24,"value":156},{"type":19,"tag":219,"props":1484,"children":1486},{"id":1485},"y-noconfirm",[1487,1493,1494],{"type":19,"tag":43,"props":1488,"children":1490},{"className":1489},[],[1491],{"type":24,"value":1492},"-y",{"type":24,"value":230},{"type":19,"tag":43,"props":1495,"children":1497},{"className":1496},[],[1498],{"type":24,"value":1499},"--noconfirm",{"type":19,"tag":20,"props":1501,"children":1502},{},[1503],{"type":24,"value":1504},"替换输出目录而不询问确认。示例如下：",{"type":19,"tag":52,"props":1506,"children":1508},{"className":54,"code":1507,"language":56,"meta":7,"style":7},"pyinstaller -F -y your_script.py\n",[1509],{"type":19,"tag":43,"props":1510,"children":1511},{"__ignoreMap":7},[1512],{"type":19,"tag":62,"props":1513,"children":1514},{"class":64,"line":65},[1515,1519,1523,1528],{"type":19,"tag":62,"props":1516,"children":1517},{"style":69},[1518],{"type":24,"value":102},{"type":19,"tag":62,"props":1520,"children":1521},{"style":105},[1522],{"type":24,"value":260},{"type":19,"tag":62,"props":1524,"children":1525},{"style":105},[1526],{"type":24,"value":1527}," -y",{"type":19,"tag":62,"props":1529,"children":1530},{"style":74},[1531],{"type":24,"value":156},{"type":19,"tag":27,"props":1533,"children":1535},{"id":1534},"四使用-spec-文件进行高级打包",[1536],{"type":24,"value":1537},"四、使用 spec 文件进行高级打包",{"type":19,"tag":20,"props":1539,"children":1540},{},[1541],{"type":24,"value":1542},"对于复杂的打包需求，建议使用 spec 文件进行配置。生成 spec 文件的命令：",{"type":19,"tag":52,"props":1544,"children":1546},{"className":54,"code":1545,"language":56,"meta":7,"style":7},"pyi-makespec my_script.py\n",[1547],{"type":19,"tag":43,"props":1548,"children":1549},{"__ignoreMap":7},[1550],{"type":19,"tag":62,"props":1551,"children":1552},{"class":64,"line":65},[1553,1558],{"type":19,"tag":62,"props":1554,"children":1555},{"style":69},[1556],{"type":24,"value":1557},"pyi-makespec",{"type":19,"tag":62,"props":1559,"children":1560},{"style":74},[1561],{"type":24,"value":1562}," my_script.py\n",{"type":19,"tag":20,"props":1564,"children":1565},{},[1566,1568,1574],{"type":24,"value":1567},"这会生成一个 ",{"type":19,"tag":43,"props":1569,"children":1571},{"className":1570},[],[1572],{"type":24,"value":1573},"my_script.spec",{"type":24,"value":1575}," 文件，内容大致如下：",{"type":19,"tag":52,"props":1577,"children":1581},{"className":1578,"code":1579,"language":1580,"meta":7,"style":7},"language-python shiki shiki-themes github-dark","# my_script.spec\na = Analysis(['my_script.py'],\n             pathex=['\u002Fpath\u002Fto\u002Fyour\u002Fscript'],\n             binaries=[],\n             datas=[],\n             hiddenimports=[],\n             hookspath=[],\n             runtime_hooks=[],\n             excludes=[],\n             win_no_prefer_redirects=False,\n             win_private_assemblies=False,\n             cipher=block_cipher,\n             noarchive=False)\npyz = PYZ(a.pure, a.zipped_data,\n             cipher=block_cipher)\nexe = EXE(pyz,\n          a.scripts,\n          a.binaries,\n          a.zipfiles,\n          a.datas,\n          [],\n          name='my_script',\n          debug=False,\n          bootloader_ignore_signals=False,\n          strip=False,\n          upx=True,\n          upx_exclude=[],\n          runtime_tmpdir=None,\n          console=True)\n","python",[1582],{"type":19,"tag":43,"props":1583,"children":1584},{"__ignoreMap":7},[1585,1593,1601,1610,1619,1628,1637,1646,1655,1664,1673,1682,1691,1700,1709,1718,1727,1736,1745,1754,1763,1772,1781,1790,1799,1808,1817,1826,1835],{"type":19,"tag":62,"props":1586,"children":1587},{"class":64,"line":65},[1588],{"type":19,"tag":62,"props":1589,"children":1590},{},[1591],{"type":24,"value":1592},"# my_script.spec\n",{"type":19,"tag":62,"props":1594,"children":1595},{"class":64,"line":146},[1596],{"type":19,"tag":62,"props":1597,"children":1598},{},[1599],{"type":24,"value":1600},"a = Analysis(['my_script.py'],\n",{"type":19,"tag":62,"props":1602,"children":1604},{"class":64,"line":1603},3,[1605],{"type":19,"tag":62,"props":1606,"children":1607},{},[1608],{"type":24,"value":1609},"             pathex=['\u002Fpath\u002Fto\u002Fyour\u002Fscript'],\n",{"type":19,"tag":62,"props":1611,"children":1613},{"class":64,"line":1612},4,[1614],{"type":19,"tag":62,"props":1615,"children":1616},{},[1617],{"type":24,"value":1618},"             binaries=[],\n",{"type":19,"tag":62,"props":1620,"children":1622},{"class":64,"line":1621},5,[1623],{"type":19,"tag":62,"props":1624,"children":1625},{},[1626],{"type":24,"value":1627},"             datas=[],\n",{"type":19,"tag":62,"props":1629,"children":1631},{"class":64,"line":1630},6,[1632],{"type":19,"tag":62,"props":1633,"children":1634},{},[1635],{"type":24,"value":1636},"             hiddenimports=[],\n",{"type":19,"tag":62,"props":1638,"children":1640},{"class":64,"line":1639},7,[1641],{"type":19,"tag":62,"props":1642,"children":1643},{},[1644],{"type":24,"value":1645},"             hookspath=[],\n",{"type":19,"tag":62,"props":1647,"children":1649},{"class":64,"line":1648},8,[1650],{"type":19,"tag":62,"props":1651,"children":1652},{},[1653],{"type":24,"value":1654},"             runtime_hooks=[],\n",{"type":19,"tag":62,"props":1656,"children":1658},{"class":64,"line":1657},9,[1659],{"type":19,"tag":62,"props":1660,"children":1661},{},[1662],{"type":24,"value":1663},"             excludes=[],\n",{"type":19,"tag":62,"props":1665,"children":1667},{"class":64,"line":1666},10,[1668],{"type":19,"tag":62,"props":1669,"children":1670},{},[1671],{"type":24,"value":1672},"             win_no_prefer_redirects=False,\n",{"type":19,"tag":62,"props":1674,"children":1676},{"class":64,"line":1675},11,[1677],{"type":19,"tag":62,"props":1678,"children":1679},{},[1680],{"type":24,"value":1681},"             win_private_assemblies=False,\n",{"type":19,"tag":62,"props":1683,"children":1685},{"class":64,"line":1684},12,[1686],{"type":19,"tag":62,"props":1687,"children":1688},{},[1689],{"type":24,"value":1690},"             cipher=block_cipher,\n",{"type":19,"tag":62,"props":1692,"children":1694},{"class":64,"line":1693},13,[1695],{"type":19,"tag":62,"props":1696,"children":1697},{},[1698],{"type":24,"value":1699},"             noarchive=False)\n",{"type":19,"tag":62,"props":1701,"children":1703},{"class":64,"line":1702},14,[1704],{"type":19,"tag":62,"props":1705,"children":1706},{},[1707],{"type":24,"value":1708},"pyz = PYZ(a.pure, a.zipped_data,\n",{"type":19,"tag":62,"props":1710,"children":1712},{"class":64,"line":1711},15,[1713],{"type":19,"tag":62,"props":1714,"children":1715},{},[1716],{"type":24,"value":1717},"             cipher=block_cipher)\n",{"type":19,"tag":62,"props":1719,"children":1721},{"class":64,"line":1720},16,[1722],{"type":19,"tag":62,"props":1723,"children":1724},{},[1725],{"type":24,"value":1726},"exe = EXE(pyz,\n",{"type":19,"tag":62,"props":1728,"children":1730},{"class":64,"line":1729},17,[1731],{"type":19,"tag":62,"props":1732,"children":1733},{},[1734],{"type":24,"value":1735},"          a.scripts,\n",{"type":19,"tag":62,"props":1737,"children":1739},{"class":64,"line":1738},18,[1740],{"type":19,"tag":62,"props":1741,"children":1742},{},[1743],{"type":24,"value":1744},"          a.binaries,\n",{"type":19,"tag":62,"props":1746,"children":1748},{"class":64,"line":1747},19,[1749],{"type":19,"tag":62,"props":1750,"children":1751},{},[1752],{"type":24,"value":1753},"          a.zipfiles,\n",{"type":19,"tag":62,"props":1755,"children":1757},{"class":64,"line":1756},20,[1758],{"type":19,"tag":62,"props":1759,"children":1760},{},[1761],{"type":24,"value":1762},"          a.datas,\n",{"type":19,"tag":62,"props":1764,"children":1766},{"class":64,"line":1765},21,[1767],{"type":19,"tag":62,"props":1768,"children":1769},{},[1770],{"type":24,"value":1771},"          [],\n",{"type":19,"tag":62,"props":1773,"children":1775},{"class":64,"line":1774},22,[1776],{"type":19,"tag":62,"props":1777,"children":1778},{},[1779],{"type":24,"value":1780},"          name='my_script',\n",{"type":19,"tag":62,"props":1782,"children":1784},{"class":64,"line":1783},23,[1785],{"type":19,"tag":62,"props":1786,"children":1787},{},[1788],{"type":24,"value":1789},"          debug=False,\n",{"type":19,"tag":62,"props":1791,"children":1793},{"class":64,"line":1792},24,[1794],{"type":19,"tag":62,"props":1795,"children":1796},{},[1797],{"type":24,"value":1798},"          bootloader_ignore_signals=False,\n",{"type":19,"tag":62,"props":1800,"children":1802},{"class":64,"line":1801},25,[1803],{"type":19,"tag":62,"props":1804,"children":1805},{},[1806],{"type":24,"value":1807},"          strip=False,\n",{"type":19,"tag":62,"props":1809,"children":1811},{"class":64,"line":1810},26,[1812],{"type":19,"tag":62,"props":1813,"children":1814},{},[1815],{"type":24,"value":1816},"          upx=True,\n",{"type":19,"tag":62,"props":1818,"children":1820},{"class":64,"line":1819},27,[1821],{"type":19,"tag":62,"props":1822,"children":1823},{},[1824],{"type":24,"value":1825},"          upx_exclude=[],\n",{"type":19,"tag":62,"props":1827,"children":1829},{"class":64,"line":1828},28,[1830],{"type":19,"tag":62,"props":1831,"children":1832},{},[1833],{"type":24,"value":1834},"          runtime_tmpdir=None,\n",{"type":19,"tag":62,"props":1836,"children":1838},{"class":64,"line":1837},29,[1839],{"type":19,"tag":62,"props":1840,"children":1841},{},[1842],{"type":24,"value":1843},"          console=True)\n",{"type":19,"tag":20,"props":1845,"children":1846},{},[1847],{"type":24,"value":1848},"修改 spec 文件后，使用以下命令进行打包：",{"type":19,"tag":52,"props":1850,"children":1852},{"className":54,"code":1851,"language":56,"meta":7,"style":7},"pyinstaller my_script.spec\n",[1853],{"type":19,"tag":43,"props":1854,"children":1855},{"__ignoreMap":7},[1856],{"type":19,"tag":62,"props":1857,"children":1858},{"class":64,"line":65},[1859,1863],{"type":19,"tag":62,"props":1860,"children":1861},{"style":69},[1862],{"type":24,"value":102},{"type":19,"tag":62,"props":1864,"children":1865},{"style":74},[1866],{"type":24,"value":1867}," my_script.spec\n",{"type":19,"tag":212,"props":1869,"children":1871},{"id":1870},"spec-文件高级配置示例",[1872],{"type":24,"value":1873},"spec 文件高级配置示例",{"type":19,"tag":20,"props":1875,"children":1876},{},[1877],{"type":24,"value":1878},"添加数据文件：",{"type":19,"tag":52,"props":1880,"children":1882},{"className":1578,"code":1881,"language":1580,"meta":7,"style":7},"datas=[('data\u002F*.txt', 'data'), ('images\u002F*.png', 'images')],\n",[1883],{"type":19,"tag":43,"props":1884,"children":1885},{"__ignoreMap":7},[1886],{"type":19,"tag":62,"props":1887,"children":1888},{"class":64,"line":65},[1889],{"type":19,"tag":62,"props":1890,"children":1891},{},[1892],{"type":24,"value":1881},{"type":19,"tag":20,"props":1894,"children":1895},{},[1896],{"type":24,"value":1897},"添加隐藏导入：",{"type":19,"tag":52,"props":1899,"children":1901},{"className":1578,"code":1900,"language":1580,"meta":7,"style":7},"hiddenimports=['module1', 'module2.submodule'],\n",[1902],{"type":19,"tag":43,"props":1903,"children":1904},{"__ignoreMap":7},[1905],{"type":19,"tag":62,"props":1906,"children":1907},{"class":64,"line":65},[1908],{"type":19,"tag":62,"props":1909,"children":1910},{},[1911],{"type":24,"value":1900},{"type":19,"tag":20,"props":1913,"children":1914},{},[1915],{"type":24,"value":1916},"设置图标和其他属性：",{"type":19,"tag":52,"props":1918,"children":1920},{"className":1578,"code":1919,"language":1580,"meta":7,"style":7},"exe = EXE(pyz,\n          a.scripts,\n          a.binaries,\n          a.zipfiles,\n          a.datas,\n          [],\n          name='MyApplication',\n          debug=False,\n          icon='app_icon.ico',  # 设置图标\n          console=False,  # 不显示控制台\n          upx=True,\n          upx_exclude=[],\n          runtime_tmpdir=None)\n",[1921],{"type":19,"tag":43,"props":1922,"children":1923},{"__ignoreMap":7},[1924,1931,1938,1945,1952,1959,1966,1974,1981,1989,1997,2004,2011],{"type":19,"tag":62,"props":1925,"children":1926},{"class":64,"line":65},[1927],{"type":19,"tag":62,"props":1928,"children":1929},{},[1930],{"type":24,"value":1726},{"type":19,"tag":62,"props":1932,"children":1933},{"class":64,"line":146},[1934],{"type":19,"tag":62,"props":1935,"children":1936},{},[1937],{"type":24,"value":1735},{"type":19,"tag":62,"props":1939,"children":1940},{"class":64,"line":1603},[1941],{"type":19,"tag":62,"props":1942,"children":1943},{},[1944],{"type":24,"value":1744},{"type":19,"tag":62,"props":1946,"children":1947},{"class":64,"line":1612},[1948],{"type":19,"tag":62,"props":1949,"children":1950},{},[1951],{"type":24,"value":1753},{"type":19,"tag":62,"props":1953,"children":1954},{"class":64,"line":1621},[1955],{"type":19,"tag":62,"props":1956,"children":1957},{},[1958],{"type":24,"value":1762},{"type":19,"tag":62,"props":1960,"children":1961},{"class":64,"line":1630},[1962],{"type":19,"tag":62,"props":1963,"children":1964},{},[1965],{"type":24,"value":1771},{"type":19,"tag":62,"props":1967,"children":1968},{"class":64,"line":1639},[1969],{"type":19,"tag":62,"props":1970,"children":1971},{},[1972],{"type":24,"value":1973},"          name='MyApplication',\n",{"type":19,"tag":62,"props":1975,"children":1976},{"class":64,"line":1648},[1977],{"type":19,"tag":62,"props":1978,"children":1979},{},[1980],{"type":24,"value":1789},{"type":19,"tag":62,"props":1982,"children":1983},{"class":64,"line":1657},[1984],{"type":19,"tag":62,"props":1985,"children":1986},{},[1987],{"type":24,"value":1988},"          icon='app_icon.ico',  # 设置图标\n",{"type":19,"tag":62,"props":1990,"children":1991},{"class":64,"line":1666},[1992],{"type":19,"tag":62,"props":1993,"children":1994},{},[1995],{"type":24,"value":1996},"          console=False,  # 不显示控制台\n",{"type":19,"tag":62,"props":1998,"children":1999},{"class":64,"line":1675},[2000],{"type":19,"tag":62,"props":2001,"children":2002},{},[2003],{"type":24,"value":1816},{"type":19,"tag":62,"props":2005,"children":2006},{"class":64,"line":1684},[2007],{"type":19,"tag":62,"props":2008,"children":2009},{},[2010],{"type":24,"value":1825},{"type":19,"tag":62,"props":2012,"children":2013},{"class":64,"line":1693},[2014],{"type":19,"tag":62,"props":2015,"children":2016},{},[2017],{"type":24,"value":2018},"          runtime_tmpdir=None)\n",{"type":19,"tag":27,"props":2020,"children":2022},{"id":2021},"五常见问题及解决方法",[2023],{"type":24,"value":2024},"五、常见问题及解决方法",{"type":19,"tag":34,"props":2026,"children":2027},{},[],{"type":19,"tag":212,"props":2029,"children":2031},{"id":2030},"_1-打包后运行提示缺少模块",[2032],{"type":24,"value":2033},"1. 打包后运行提示缺少模块",{"type":19,"tag":20,"props":2035,"children":2036},{},[2037,2039,2045],{"type":24,"value":2038},"解决方法：使用 ",{"type":19,"tag":43,"props":2040,"children":2042},{"className":2041},[],[2043],{"type":24,"value":2044},"--hidden-import",{"type":24,"value":2046}," 参数手动指定缺少的模块",{"type":19,"tag":52,"props":2048,"children":2050},{"className":54,"code":2049,"language":56,"meta":7,"style":7},"pyinstaller -F --hidden-import=missing_module my_script.py\n",[2051],{"type":19,"tag":43,"props":2052,"children":2053},{"__ignoreMap":7},[2054],{"type":19,"tag":62,"props":2055,"children":2056},{"class":64,"line":65},[2057,2061,2065,2070],{"type":19,"tag":62,"props":2058,"children":2059},{"style":69},[2060],{"type":24,"value":102},{"type":19,"tag":62,"props":2062,"children":2063},{"style":105},[2064],{"type":24,"value":260},{"type":19,"tag":62,"props":2066,"children":2067},{"style":105},[2068],{"type":24,"value":2069}," --hidden-import=missing_module",{"type":19,"tag":62,"props":2071,"children":2072},{"style":74},[2073],{"type":24,"value":1562},{"type":19,"tag":212,"props":2075,"children":2077},{"id":2076},"_2-数据文件无法访问",[2078],{"type":24,"value":2079},"2. 数据文件无法访问",{"type":19,"tag":20,"props":2081,"children":2082},{},[2083],{"type":24,"value":2084},"解决方法：",{"type":19,"tag":2086,"props":2087,"children":2088},"ol",{},[2089,2102],{"type":19,"tag":167,"props":2090,"children":2091},{},[2092,2094,2100],{"type":24,"value":2093},"使用 ",{"type":19,"tag":43,"props":2095,"children":2097},{"className":2096},[],[2098],{"type":24,"value":2099},"--add-data",{"type":24,"value":2101}," 参数添加数据文件",{"type":19,"tag":167,"props":2103,"children":2104},{},[2105],{"type":24,"value":2106},"在代码中使用正确的路径访问数据文件，推荐使用以下方法获取数据文件路径：",{"type":19,"tag":52,"props":2108,"children":2110},{"className":1578,"code":2109,"language":1580,"meta":7,"style":7},"import sys\nimport os\n\ndef get_resource_path(relative_path):\n    \"\"\"获取资源文件的绝对路径\"\"\"\n    if getattr(sys, 'frozen', False):\n        # 打包后的环境\n        base_path = sys._MEIPASS\n    else:\n        # 开发环境\n        base_path = os.path.abspath(\".\")\n    return os.path.join(base_path, relative_path)\n\n# 使用示例\ndata_file_path = get_resource_path('data\u002Fconfig.ini')\n",[2111],{"type":19,"tag":43,"props":2112,"children":2113},{"__ignoreMap":7},[2114,2122,2130,2139,2147,2155,2163,2171,2179,2187,2195,2203,2211,2218,2226],{"type":19,"tag":62,"props":2115,"children":2116},{"class":64,"line":65},[2117],{"type":19,"tag":62,"props":2118,"children":2119},{},[2120],{"type":24,"value":2121},"import sys\n",{"type":19,"tag":62,"props":2123,"children":2124},{"class":64,"line":146},[2125],{"type":19,"tag":62,"props":2126,"children":2127},{},[2128],{"type":24,"value":2129},"import os\n",{"type":19,"tag":62,"props":2131,"children":2132},{"class":64,"line":1603},[2133],{"type":19,"tag":62,"props":2134,"children":2136},{"emptyLinePlaceholder":2135},true,[2137],{"type":24,"value":2138},"\n",{"type":19,"tag":62,"props":2140,"children":2141},{"class":64,"line":1612},[2142],{"type":19,"tag":62,"props":2143,"children":2144},{},[2145],{"type":24,"value":2146},"def get_resource_path(relative_path):\n",{"type":19,"tag":62,"props":2148,"children":2149},{"class":64,"line":1621},[2150],{"type":19,"tag":62,"props":2151,"children":2152},{},[2153],{"type":24,"value":2154},"    \"\"\"获取资源文件的绝对路径\"\"\"\n",{"type":19,"tag":62,"props":2156,"children":2157},{"class":64,"line":1630},[2158],{"type":19,"tag":62,"props":2159,"children":2160},{},[2161],{"type":24,"value":2162},"    if getattr(sys, 'frozen', False):\n",{"type":19,"tag":62,"props":2164,"children":2165},{"class":64,"line":1639},[2166],{"type":19,"tag":62,"props":2167,"children":2168},{},[2169],{"type":24,"value":2170},"        # 打包后的环境\n",{"type":19,"tag":62,"props":2172,"children":2173},{"class":64,"line":1648},[2174],{"type":19,"tag":62,"props":2175,"children":2176},{},[2177],{"type":24,"value":2178},"        base_path = sys._MEIPASS\n",{"type":19,"tag":62,"props":2180,"children":2181},{"class":64,"line":1657},[2182],{"type":19,"tag":62,"props":2183,"children":2184},{},[2185],{"type":24,"value":2186},"    else:\n",{"type":19,"tag":62,"props":2188,"children":2189},{"class":64,"line":1666},[2190],{"type":19,"tag":62,"props":2191,"children":2192},{},[2193],{"type":24,"value":2194},"        # 开发环境\n",{"type":19,"tag":62,"props":2196,"children":2197},{"class":64,"line":1675},[2198],{"type":19,"tag":62,"props":2199,"children":2200},{},[2201],{"type":24,"value":2202},"        base_path = os.path.abspath(\".\")\n",{"type":19,"tag":62,"props":2204,"children":2205},{"class":64,"line":1684},[2206],{"type":19,"tag":62,"props":2207,"children":2208},{},[2209],{"type":24,"value":2210},"    return os.path.join(base_path, relative_path)\n",{"type":19,"tag":62,"props":2212,"children":2213},{"class":64,"line":1693},[2214],{"type":19,"tag":62,"props":2215,"children":2216},{"emptyLinePlaceholder":2135},[2217],{"type":24,"value":2138},{"type":19,"tag":62,"props":2219,"children":2220},{"class":64,"line":1702},[2221],{"type":19,"tag":62,"props":2222,"children":2223},{},[2224],{"type":24,"value":2225},"# 使用示例\n",{"type":19,"tag":62,"props":2227,"children":2228},{"class":64,"line":1711},[2229],{"type":19,"tag":62,"props":2230,"children":2231},{},[2232],{"type":24,"value":2233},"data_file_path = get_resource_path('data\u002Fconfig.ini')\n",{"type":19,"tag":212,"props":2235,"children":2237},{"id":2236},"_3-打包后的文件体积过大",[2238],{"type":24,"value":2239},"3. 打包后的文件体积过大",{"type":19,"tag":20,"props":2241,"children":2242},{},[2243],{"type":24,"value":2084},{"type":19,"tag":2086,"props":2245,"children":2246},{},[2247],{"type":19,"tag":167,"props":2248,"children":2249},{},[2250],{"type":24,"value":2251},"使用 UPX 压缩（需要先安装 UPX）",{"type":19,"tag":52,"props":2253,"children":2255},{"className":54,"code":2254,"language":56,"meta":7,"style":7},"pyinstaller -F --upx-dir=.\u002Fupx my_script.py\n",[2256],{"type":19,"tag":43,"props":2257,"children":2258},{"__ignoreMap":7},[2259],{"type":19,"tag":62,"props":2260,"children":2261},{"class":64,"line":65},[2262,2266,2270,2274],{"type":19,"tag":62,"props":2263,"children":2264},{"style":69},[2265],{"type":24,"value":102},{"type":19,"tag":62,"props":2267,"children":2268},{"style":105},[2269],{"type":24,"value":260},{"type":19,"tag":62,"props":2271,"children":2272},{"style":105},[2273],{"type":24,"value":1436},{"type":19,"tag":62,"props":2275,"children":2276},{"style":74},[2277],{"type":24,"value":1562},{"type":19,"tag":2086,"props":2279,"children":2280},{"start":146},[2281],{"type":19,"tag":167,"props":2282,"children":2283},{},[2284],{"type":24,"value":2285},"排除不必要的模块",{"type":19,"tag":52,"props":2287,"children":2289},{"className":54,"code":2288,"language":56,"meta":7,"style":7},"pyinstaller -F --exclude-module=matplotlib --exclude-module=numpy my_script.py\n",[2290],{"type":19,"tag":43,"props":2291,"children":2292},{"__ignoreMap":7},[2293],{"type":19,"tag":62,"props":2294,"children":2295},{"class":64,"line":65},[2296,2300,2304,2309,2314],{"type":19,"tag":62,"props":2297,"children":2298},{"style":69},[2299],{"type":24,"value":102},{"type":19,"tag":62,"props":2301,"children":2302},{"style":105},[2303],{"type":24,"value":260},{"type":19,"tag":62,"props":2305,"children":2306},{"style":105},[2307],{"type":24,"value":2308}," --exclude-module=matplotlib",{"type":19,"tag":62,"props":2310,"children":2311},{"style":105},[2312],{"type":24,"value":2313}," --exclude-module=numpy",{"type":19,"tag":62,"props":2315,"children":2316},{"style":74},[2317],{"type":24,"value":1562},{"type":19,"tag":2086,"props":2319,"children":2320},{"start":1603},[2321],{"type":19,"tag":167,"props":2322,"children":2323},{},[2324],{"type":24,"value":2325},"使用虚拟环境，只安装必要的依赖",{"type":19,"tag":212,"props":2327,"children":2329},{"id":2328},"_4-打包后程序运行闪退",[2330],{"type":24,"value":2331},"4. 打包后程序运行闪退",{"type":19,"tag":20,"props":2333,"children":2334},{},[2335],{"type":24,"value":2084},{"type":19,"tag":2086,"props":2337,"children":2338},{},[2339],{"type":19,"tag":167,"props":2340,"children":2341},{},[2342,2344,2349],{"type":24,"value":2343},"不使用 ",{"type":19,"tag":43,"props":2345,"children":2347},{"className":2346},[],[2348],{"type":24,"value":394},{"type":24,"value":2350}," 参数，显示控制台窗口，查看错误信息",{"type":19,"tag":52,"props":2352,"children":2354},{"className":54,"code":2353,"language":56,"meta":7,"style":7},"pyinstaller -F my_script.py  # 不添加 -w 参数\n",[2355],{"type":19,"tag":43,"props":2356,"children":2357},{"__ignoreMap":7},[2358],{"type":19,"tag":62,"props":2359,"children":2360},{"class":64,"line":65},[2361,2365,2369,2374],{"type":19,"tag":62,"props":2362,"children":2363},{"style":69},[2364],{"type":24,"value":102},{"type":19,"tag":62,"props":2366,"children":2367},{"style":105},[2368],{"type":24,"value":260},{"type":19,"tag":62,"props":2370,"children":2371},{"style":74},[2372],{"type":24,"value":2373}," my_script.py",{"type":19,"tag":62,"props":2375,"children":2376},{"style":140},[2377],{"type":24,"value":2378},"  # 不添加 -w 参数\n",{"type":19,"tag":2086,"props":2380,"children":2381},{"start":146},[2382],{"type":19,"tag":167,"props":2383,"children":2384},{},[2385],{"type":24,"value":2386},"检查是否有相对路径问题，确保所有文件路径都使用绝对路径或上述的资源路径获取方法",{"type":19,"tag":27,"props":2388,"children":2390},{"id":2389},"六完整示例",[2391],{"type":24,"value":2392},"六、完整示例",{"type":19,"tag":34,"props":2394,"children":2395},{},[],{"type":19,"tag":212,"props":2397,"children":2399},{"id":2398},"示例-1打包一个简单的命令行程序",[2400],{"type":24,"value":2401},"示例 1：打包一个简单的命令行程序",{"type":19,"tag":52,"props":2403,"children":2405},{"className":54,"code":2404,"language":56,"meta":7,"style":7},"# 打包成单个文件，显示控制台，指定名称为 \"calculator\"\npyinstaller -F -n calculator calculator.py\n",[2406],{"type":19,"tag":43,"props":2407,"children":2408},{"__ignoreMap":7},[2409,2417],{"type":19,"tag":62,"props":2410,"children":2411},{"class":64,"line":65},[2412],{"type":19,"tag":62,"props":2413,"children":2414},{"style":140},[2415],{"type":24,"value":2416},"# 打包成单个文件，显示控制台，指定名称为 \"calculator\"\n",{"type":19,"tag":62,"props":2418,"children":2419},{"class":64,"line":146},[2420,2424,2428,2432,2437],{"type":19,"tag":62,"props":2421,"children":2422},{"style":69},[2423],{"type":24,"value":102},{"type":19,"tag":62,"props":2425,"children":2426},{"style":105},[2427],{"type":24,"value":260},{"type":19,"tag":62,"props":2429,"children":2430},{"style":105},[2431],{"type":24,"value":553},{"type":19,"tag":62,"props":2433,"children":2434},{"style":74},[2435],{"type":24,"value":2436}," calculator",{"type":19,"tag":62,"props":2438,"children":2439},{"style":74},[2440],{"type":24,"value":2441}," calculator.py\n",{"type":19,"tag":212,"props":2443,"children":2445},{"id":2444},"示例-2打包一个-tkinter-gui-程序",[2446],{"type":24,"value":2447},"示例 2：打包一个 Tkinter GUI 程序",{"type":19,"tag":52,"props":2449,"children":2451},{"className":54,"code":2450,"language":56,"meta":7,"style":7},"# 打包成单个文件，不显示控制台，指定图标，添加数据文件\npyinstaller -F -w -i app_icon.ico --add-data=\"images\u002F*;images\" my_gui_app.py\n",[2452],{"type":19,"tag":43,"props":2453,"children":2454},{"__ignoreMap":7},[2455,2463],{"type":19,"tag":62,"props":2456,"children":2457},{"class":64,"line":65},[2458],{"type":19,"tag":62,"props":2459,"children":2460},{"style":140},[2461],{"type":24,"value":2462},"# 打包成单个文件，不显示控制台，指定图标，添加数据文件\n",{"type":19,"tag":62,"props":2464,"children":2465},{"class":64,"line":146},[2466,2470,2474,2478,2482,2486,2490,2495],{"type":19,"tag":62,"props":2467,"children":2468},{"style":69},[2469],{"type":24,"value":102},{"type":19,"tag":62,"props":2471,"children":2472},{"style":105},[2473],{"type":24,"value":260},{"type":19,"tag":62,"props":2475,"children":2476},{"style":105},[2477],{"type":24,"value":432},{"type":19,"tag":62,"props":2479,"children":2480},{"style":105},[2481],{"type":24,"value":636},{"type":19,"tag":62,"props":2483,"children":2484},{"style":74},[2485],{"type":24,"value":641},{"type":19,"tag":62,"props":2487,"children":2488},{"style":105},[2489],{"type":24,"value":908},{"type":19,"tag":62,"props":2491,"children":2492},{"style":74},[2493],{"type":24,"value":2494},"\"images\u002F*;images\"",{"type":19,"tag":62,"props":2496,"children":2497},{"style":74},[2498],{"type":24,"value":2499}," my_gui_app.py\n",{"type":19,"tag":212,"props":2501,"children":2503},{"id":2502},"示例-3使用-spec-文件打包复杂应用",[2504],{"type":24,"value":2505},"示例 3：使用 spec 文件打包复杂应用",{"type":19,"tag":2086,"props":2507,"children":2508},{},[2509],{"type":19,"tag":167,"props":2510,"children":2511},{},[2512],{"type":24,"value":2513},"生成 spec 文件：",{"type":19,"tag":52,"props":2515,"children":2517},{"className":54,"code":2516,"language":56,"meta":7,"style":7},"pyi-makespec --name \"MyApp\" --icon \"app_icon.ico\" --windowed my_app.py\n",[2518],{"type":19,"tag":43,"props":2519,"children":2520},{"__ignoreMap":7},[2521],{"type":19,"tag":62,"props":2522,"children":2523},{"class":64,"line":65},[2524,2528,2533,2538,2543,2548,2553],{"type":19,"tag":62,"props":2525,"children":2526},{"style":69},[2527],{"type":24,"value":1557},{"type":19,"tag":62,"props":2529,"children":2530},{"style":105},[2531],{"type":24,"value":2532}," --name",{"type":19,"tag":62,"props":2534,"children":2535},{"style":74},[2536],{"type":24,"value":2537}," \"MyApp\"",{"type":19,"tag":62,"props":2539,"children":2540},{"style":105},[2541],{"type":24,"value":2542}," --icon",{"type":19,"tag":62,"props":2544,"children":2545},{"style":74},[2546],{"type":24,"value":2547}," \"app_icon.ico\"",{"type":19,"tag":62,"props":2549,"children":2550},{"style":105},[2551],{"type":24,"value":2552}," --windowed",{"type":19,"tag":62,"props":2554,"children":2555},{"style":74},[2556],{"type":24,"value":2557}," my_app.py\n",{"type":19,"tag":2086,"props":2559,"children":2560},{"start":146},[2561],{"type":19,"tag":167,"props":2562,"children":2563},{},[2564],{"type":24,"value":2565},"编辑 spec 文件，添加数据和隐藏导入：",{"type":19,"tag":52,"props":2567,"children":2569},{"className":1578,"code":2568,"language":1580,"meta":7,"style":7},"a = Analysis(['my_app.py'],\n             pathex=['\u002Fpath\u002Fto\u002Fapp'],\n             binaries=[],\n             datas=[('assets\u002F*', 'assets'), ('config\u002F*.json', 'config')],\n             hiddenimports=['pandas', 'requests'],\n             # 其他默认配置...\n            )\n# 其他配置...\nexe = EXE(pyz,\n          # 其他配置...\n          console=False,\n          icon='app_icon.ico'\n         )\n",[2570],{"type":19,"tag":43,"props":2571,"children":2572},{"__ignoreMap":7},[2573,2581,2589,2596,2604,2612,2620,2628,2636,2643,2651,2659,2667],{"type":19,"tag":62,"props":2574,"children":2575},{"class":64,"line":65},[2576],{"type":19,"tag":62,"props":2577,"children":2578},{},[2579],{"type":24,"value":2580},"a = Analysis(['my_app.py'],\n",{"type":19,"tag":62,"props":2582,"children":2583},{"class":64,"line":146},[2584],{"type":19,"tag":62,"props":2585,"children":2586},{},[2587],{"type":24,"value":2588},"             pathex=['\u002Fpath\u002Fto\u002Fapp'],\n",{"type":19,"tag":62,"props":2590,"children":2591},{"class":64,"line":1603},[2592],{"type":19,"tag":62,"props":2593,"children":2594},{},[2595],{"type":24,"value":1618},{"type":19,"tag":62,"props":2597,"children":2598},{"class":64,"line":1612},[2599],{"type":19,"tag":62,"props":2600,"children":2601},{},[2602],{"type":24,"value":2603},"             datas=[('assets\u002F*', 'assets'), ('config\u002F*.json', 'config')],\n",{"type":19,"tag":62,"props":2605,"children":2606},{"class":64,"line":1621},[2607],{"type":19,"tag":62,"props":2608,"children":2609},{},[2610],{"type":24,"value":2611},"             hiddenimports=['pandas', 'requests'],\n",{"type":19,"tag":62,"props":2613,"children":2614},{"class":64,"line":1630},[2615],{"type":19,"tag":62,"props":2616,"children":2617},{},[2618],{"type":24,"value":2619},"             # 其他默认配置...\n",{"type":19,"tag":62,"props":2621,"children":2622},{"class":64,"line":1639},[2623],{"type":19,"tag":62,"props":2624,"children":2625},{},[2626],{"type":24,"value":2627},"            )\n",{"type":19,"tag":62,"props":2629,"children":2630},{"class":64,"line":1648},[2631],{"type":19,"tag":62,"props":2632,"children":2633},{},[2634],{"type":24,"value":2635},"# 其他配置...\n",{"type":19,"tag":62,"props":2637,"children":2638},{"class":64,"line":1657},[2639],{"type":19,"tag":62,"props":2640,"children":2641},{},[2642],{"type":24,"value":1726},{"type":19,"tag":62,"props":2644,"children":2645},{"class":64,"line":1666},[2646],{"type":19,"tag":62,"props":2647,"children":2648},{},[2649],{"type":24,"value":2650},"          # 其他配置...\n",{"type":19,"tag":62,"props":2652,"children":2653},{"class":64,"line":1675},[2654],{"type":19,"tag":62,"props":2655,"children":2656},{},[2657],{"type":24,"value":2658},"          console=False,\n",{"type":19,"tag":62,"props":2660,"children":2661},{"class":64,"line":1684},[2662],{"type":19,"tag":62,"props":2663,"children":2664},{},[2665],{"type":24,"value":2666},"          icon='app_icon.ico'\n",{"type":19,"tag":62,"props":2668,"children":2669},{"class":64,"line":1693},[2670],{"type":19,"tag":62,"props":2671,"children":2672},{},[2673],{"type":24,"value":2674},"         )\n",{"type":19,"tag":2086,"props":2676,"children":2677},{"start":1603},[2678],{"type":19,"tag":167,"props":2679,"children":2680},{},[2681],{"type":24,"value":2682},"使用 spec 文件打包：",{"type":19,"tag":52,"props":2684,"children":2686},{"className":54,"code":2685,"language":56,"meta":7,"style":7},"pyinstaller MyApp.spec\n",[2687],{"type":19,"tag":43,"props":2688,"children":2689},{"__ignoreMap":7},[2690],{"type":19,"tag":62,"props":2691,"children":2692},{"class":64,"line":65},[2693,2697],{"type":19,"tag":62,"props":2694,"children":2695},{"style":69},[2696],{"type":24,"value":102},{"type":19,"tag":62,"props":2698,"children":2699},{"style":74},[2700],{"type":24,"value":2701}," MyApp.spec\n",{"type":19,"tag":2703,"props":2704,"children":2705},"style",{},[2706],{"type":24,"value":2707},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":7,"searchDepth":146,"depth":146,"links":2709},[2710,2711,2712,2719,2722,2728],{"id":29,"depth":146,"text":32},{"id":116,"depth":146,"text":119},{"id":204,"depth":146,"text":207,"children":2713},[2714,2715,2716,2717,2718],{"id":214,"depth":1603,"text":217},{"id":381,"depth":1603,"text":384},{"id":505,"depth":1603,"text":508},{"id":687,"depth":1603,"text":690},{"id":1269,"depth":1603,"text":1272},{"id":1534,"depth":146,"text":1537,"children":2720},[2721],{"id":1870,"depth":1603,"text":1873},{"id":2021,"depth":146,"text":2024,"children":2723},[2724,2725,2726,2727],{"id":2030,"depth":1603,"text":2033},{"id":2076,"depth":1603,"text":2079},{"id":2236,"depth":1603,"text":2239},{"id":2328,"depth":1603,"text":2331},{"id":2389,"depth":146,"text":2392,"children":2729},[2730,2731,2732],{"id":2398,"depth":1603,"text":2401},{"id":2444,"depth":1603,"text":2447},{"id":2502,"depth":1603,"text":2505},"markdown","content:blog:2026-02-25-pyinstaller-guide.md","content","blog\u002F2026-02-25-pyinstaller-guide.md","blog\u002F2026-02-25-pyinstaller-guide","md",1780801017860]