美文网首页
pyinstaller 打包python文件成可执行文件

pyinstaller 打包python文件成可执行文件

作者: CrystalZhu | 来源:发表于2019-11-12 14:02 被阅读0次

    使用pyinstaller打包

    1. 安装pyinstaller

     pip3 install pyinstaller
    

    2. 打包

    pyinstaller -F EncootechServer.py
    

    执行以后会生成一个 EncootechServer.spec 文件和dist build 两个文件夹
    注意: EncootechServer.py文件应该放在项目的最外层, 否则会导致pyinstaller打包时找不到py文件中使用的module信息,无法将第三方module打包进去

    3. 需要打包资源文件时,需要对spec进行配置

    项目文件包含:1.Python源代码文件;2.图标资源文件;3.其它资源文件(html和wda的Xcode项目)
    Python源代码文件在server目录下, html文件在server/static目录下,Xcode项目在server/app目录下

    3.1 spec文件生成

    为了进行自定义配置的打包,首先需要编写打包的配置文件.spec文件。当使用pyinstaller -d xxx.py时候会生成默认的xxx.spec文件进行默认的打包配置。通过配置spec脚本,并执行pyinstaller -d xxx.spec完成自定义的打包。
    通过生成spec文件的命令,针对代码的主程序文件生成打包对应的spec文件
    打开生成的spec文件,修改其默认脚本,完成自定义打包需要的配置。spec文件是一个python脚本,其默认的结构如下例所示

    # -*- mode: python ; coding: utf-8 -*-
    
    block_cipher = None
    
    
    a = Analysis(['EncootechServer.py'],
                 pathex=['/Users/crystalzhu/AutoTest/Digi4th_iOS_server'],
                 binaries=[],
                 datas=[],
                 hiddenimports=[],
                 hookspath=[],
                 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='EncootechServer',
              debug=False,
              bootloader_ignore_signals=False,
              strip=False,
              upx=True,
              upx_exclude=[],
              runtime_tmpdir=None,
              console=False )
    app = BUNDLE(exe,
                 name='EncootechServer.app',
                 icon=None,
                 bundle_identifier=None)
    

    spec文件中主要包含4个class: Analysis, PYZ, EXE和COLLECT.

    Analysis以py文件为输入,它会分析py文件的依赖模块,并生成相应的信息

    PYZ是一个.pyz的压缩包,包含程序运行需要的所有依赖

    EXE根据上面两项生成

    COLLECT生成其他部分的输出文件夹,COLLECT也可以没有

    3.2 spec文件配置
    这里我们把 datas改为:
    datas=[('/Users/crystalzhu/AutoTest/Digi4th_iOS_server/server/static', 'static'),('/Users/crystalzhu/AutoTest/Digi4th_iOS_server/server/app', 'app')],
    
    datas接收元组,元祖的组成为(原来项目中资源文件路径, 打包后路径)
    
    3.3 重新执行pyinstaller指令
    删除之前执行pyinstaller生成的dict文件夹和build文件夹, 然后执行:
    '''json
    pyinstaller -F EncootechServer.spec
    '''
    根据我们的配置生产可执行文件
    
    重点: 拷贝资源文件目录app和static到生成目录下的dist目录下
    

    相关文章

      网友评论

          本文标题:pyinstaller 打包python文件成可执行文件

          本文链接:https://www.haomeiwen.com/subject/owofictx.html