pyinstaller最简单教程

pyinstaller网上一堆教程,却很多看的云里雾里的。踩完坑来写一下。没有废话。

-D 生成有文件夹的程序(推荐,方便排错)

-w 无控制台模式(有时候没什么卵用,还是有控制台,跟打包的系统有关系)

找到运行的主文件main.py,运行:

pyinstaller -D -w main.py

如果项目有很多文件夹而不是单个的py的文件,打包通常不能一次完成,需要编辑运行生成的main.spec文件,编辑完运行 pyinstaller  main.spec

main.spec部分内容:

a = Analysis(
    ['main.py'],
    pathex=["D:\Documents\Downloads\myProject"],
    binaries=[],
    datas=[('a.html','.'),('b','.'),('folder/*','folder')],
    hiddenimports=["PyQt5.sip"],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)
a.datas=a.datas+Tree("./static",prefix='static')+Tree("C:/Users/Administrator/AppData/Local/Programs/Python/Python37/Lib/site-packages/py2neo",prefix="py2neo")+Tree("C:/Users/Administrator/AppData/Local/Programs/Python/Python37/Lib/site-packages/jieba",prefix="jieba")

跟main.py同目录的文件,或者目录下面只有一层文件的,可以在datas里面手动写文件。

datas下导入的并不是整个文件夹内的东西,它只是根据选择去导入。如果有个static的文件,里面是一堆不同开源项目的js或者css的包,想原封不动的导入那只能用Tree。

pyinstaller最常见的问题是打包完,运行说缺少这个,缺少那个,最省事的方法是到/Python/Lib/site-packages/里找到那个包,然后整个路径写到Tree里面。

如果打包遇到permit error,终端已经是管理员权限的话,就把python文件夹的权限改一下,把[只读]后面的勾去掉。

你可能感兴趣的:(Python,python,开发语言,pyinstaller)