pyinstaller打包python程序(多文件)
<p>之前有一篇文章写过打包的问题,不过是针对单文件的打包</p><p>https://www.cnblogs.com/ronyjay/p/7155089.html</p>
<p>最近需要打包一个项目,里面含有多个py文件,以及一些资源等,所以总结一下,多文件打包的方式</p>
<p>方法主要还是两个:</p>
<p>1,还是直接使用命令行的方式</p>
<div class="cnblogs_code">
<pre>pyinstaller [主文件] -p [其他文件1] -<span style="color: rgba(0, 0, 0, 1)">p [其他文件2]
</span>--hidden-<span style="color: rgba(0, 0, 0, 1)">import [自建模块1]
</span>--hidden-<span style="color: rgba(0, 0, 0, 1)">import [自建模块2]
# 以上为一整条命令</span></pre>
</div>
<p>比如我的命令即为</p>
<div class="cnblogs_code">
<pre>pyinstaller -F start_menu.py -p check_default_speedup.py -p check_server_os.py -p check_speedup.py</pre>
</div>
<p>如果在py文件很多的情况下,维护起来并不是很方便,所以我比较倾向第二种方案</p>
<p>2,使用spec方式</p>
<p>2.1 创建spec文件</p>
<p>打开终端进入项目路径下,输入指令:<code>pyinstaller -F start_menu.py(我项目的主文件)</code>,回车,程序结束后,发现当前目录下生成两个文件夹(bulid、dist)和一个文件start_menu.spec,现在删除两个文件夹,只保留start_menu.spec文件。</p>
<p>2.2 根据自己的项目编辑该文件</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> -*- mode: python ; coding: utf-8 -*-</span>
<span style="color: rgba(0, 0, 0, 1)">
block_cipher </span>=<span style="color: rgba(0, 0, 0, 1)"> None
a </span>= Analysis([<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">start_menu.py</span><span style="color: rgba(128, 0, 0, 1)">',</span>'check_default_speedup.py', 'check_server_os.py', 'check_speedup.py'],<span style="color: rgba(51, 153, 102, 1)">#此项目中所有的python脚本</span></pre>
<pre><span style="color: rgba(0, 0, 0, 1)"> pathex</span>=[ <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">D:\\Project\\python\\xxxTool</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">],</span><span style="color: rgba(51, 153, 102, 1)">#项目绝对路径</span><span style="color: rgba(0, 0, 0, 1)">
binaries</span>=<span style="color: rgba(0, 0, 0, 1)">[],
datas</span>=<span style="color: rgba(0, 0, 0, 1)">[],</span><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(51, 153, 102, 1)">#此列表存放所有的资源文件,每个文件是一个二元组元素<br> #add_files = [ (<span class="hljs-string">'fonts\\font.ttf', <span class="hljs-string">'fonts'), <br> (<span class="hljs-string">'images\\*.png', <span class="hljs-string">'images'), <br> (<span class="hljs-string">'images\\flappy.ico', <span class="hljs-string">'images'), <br> (<span class="hljs-string">'audios\\*.wav', <span class="hljs-string">'audios'), ]</span></span></span></span></span></span></span></span></span></span><span style="color: rgba(0, 0, 0, 1)">
hiddenimports</span>=<span style="color: rgba(0, 0, 0, 1)">[],
hookspath</span>=<span style="color: rgba(0, 0, 0, 1)">[],
runtime_hooks</span>=<span style="color: rgba(0, 0, 0, 1)">[],
excludes</span>=<span style="color: rgba(0, 0, 0, 1)">[],
win_no_prefer_redirects</span>=<span style="color: rgba(0, 0, 0, 1)">False,
win_private_assemblies</span>=<span style="color: rgba(0, 0, 0, 1)">False,
cipher</span>=<span style="color: rgba(0, 0, 0, 1)">block_cipher,
noarchive</span>=<span style="color: rgba(0, 0, 0, 1)">False)
pyz </span>=<span style="color: rgba(0, 0, 0, 1)"> PYZ(a.pure, a.zipped_data,
cipher</span>=<span style="color: rgba(0, 0, 0, 1)">block_cipher)
exe </span>=<span style="color: rgba(0, 0, 0, 1)"> EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name</span>=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">start_menu</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,<span style="color: rgba(51, 153, 102, 1)"> #打包程序的名字</span>
debug</span>=<span style="color: rgba(0, 0, 0, 1)">False,
bootloader_ignore_signals</span>=<span style="color: rgba(0, 0, 0, 1)">False,
strip</span>=<span style="color: rgba(0, 0, 0, 1)">False,
upx</span>=<span style="color: rgba(0, 0, 0, 1)">True,
upx_exclude</span>=<span style="color: rgba(0, 0, 0, 1)">[],
runtime_tmpdir</span>=<span style="color: rgba(0, 0, 0, 1)">None,
console</span>=True )<br><span class="hljs-comment" style="color: rgba(51, 153, 102, 1)"># 此处console=True表示,打包后的可执行文件双击运行时屏幕会出现一个cmd窗口,不影响原程序运行<br><span class="hljs-comment"># 如果想要修改程序图标,使用在EXE()中加入 icon='xxxxx', 切记:绝对路径</span></span></pre>
</div>
<p>2.3 打包</p>
<p>执行<span style="background-color: rgba(153, 204, 0, 1)">start_menu.spec</span>文件,在项目的路径下输入指令:</p>
<div class="cnblogs_code">
<pre>pyinstaller -F start_menu.spec</pre>
</div>
<p>运行结束后,会新增 <span style="background-color: rgba(153, 204, 0, 1)">dist </span>文件夹,在该文件夹下,有打包好的程序 <span style="background-color: rgba(153, 204, 0, 1)">start_menu.exe</span></p>
<p>至此,打包结束</p>
<pre></pre>
<p> </p>
</div>
<div id="MySignature" role="contentinfo">
我走的很慢,但从不后退<br><br>
来源:https://www.cnblogs.com/ronyjay/p/12713078.html
頁:
[1]