• pyqt5生成的APP制作DMG


    http://blog.csdn.net/wudj810818/article/details/70557284

    1、环境

    • Mac OS
    • Python3.5
    • PyQt5

    2、所需工具

    • Pyinstaller – 用于将python程序生成可执行的app
    • DMG Canvas – 用于将app生成dmg

    3、环境准备及工具安装

    3.1 安装Python3.5

    3.1.1 安装

    Python3.5官网下载地址:https://www.python.org/ftp/python/3.5.3/python-3.5.3-macosx10.6.pkg。 
    下载后,点击完成安装。

    3.1.2 配置环境变量

    因Mac OS已默认安装Python2.7,所以还需修改环境变量,使Python3.5为Python默认使用版本。 
    修改文件~/.bash_profile,追加如下内容:

    PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}"
    export PATH
    • 1
    • 2

    3.2 安装PyQt5

    在命令行中执行如下命令,即可安装PyQt5:

    #pip3 install PyQt
    • 1

    3.3 安装Pyinstaller

    Pyinstaller官网为http://www.pyinstaller.org/。 
    在命令行中执行如下命令,即可安装Pyinstaller:

    #pip3 install pyinstaller
    • 1

    3.4 安装DMG Canvas

    可从官网上直接下载DMG Canvas安装文件,点击安装即可。

    4、PyQt5程序->DMG

    假设PyQt5项目的目录结构如下: 
    |– src – 源代码 
    |– resources – 相关资源文件,如图片等 
    |– main.py – 程序入口 
    |– icon.icns – iOS下的icon文件

    4.1 使用Pyinstaller将PyQt5程序打包生成APP

    在项目的目录下,执行如下命令:

    # pyinstaller -F -w -i icon.icns main.py
    • 1

    执行后,会在项目所在目录下,生成2个文件夹和1个文件:build、dist和main.spec。生成的可执行文件和app文件就在dist目录下。 
    但是运行后会发现,resources目录下相关的资源并没有被打包进去。 
    通过修改main.spec文件,即可将resources目录的相关资源打包进去。 
    main.spec文件内容如下:

    # -*- mode: python -*-
    
    block_cipher = None
    
    
    a = Analysis(['main.py'],
                 pathex=['项目所在目录'],
                 binaries=[],
                 datas=[],
                 hiddenimports=[],
                 hookspath=[],
                 runtime_hooks=[],
                 excludes=[],
                 win_no_prefer_redirects=False,
                 win_private_assemblies=False,
                 cipher=block_cipher)
    #遍历mydir目录,将其下所有文件都打包
    def extra_datas(mydir):
        def rec_glob(p, files):
            import os
            import glob
            for d in glob.glob(p):
                if os.path.isfile(d):
                    files.append(d)
                rec_glob("%s/*" % d, files)
        files = []
        rec_glob("%s/*" % mydir, files)
        extra_datas = []
        for f in files:
            extra_datas.append((f, f, 'DATA'))
    
        return extra_datas
    
    # append the 'resources' dir
    a.datas += extra_datas('resources')
    
    pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
    exe = EXE(pyz,
              a.scripts,
              a.binaries,
              a.zipfiles,
              a.datas,
              name='main',
              debug=False,
              strip=False,
              upx=True,
              console=False , icon='icon.icns')
    app = BUNDLE(exe,
                 name='应用名称.app',
                 icon='icon.icns',
                 bundle_identifier=None)

    需要注意的是,mac os下的icon文件后缀为icns。 
    编辑完成后,在命令行下执行如下命令,即可生成将resources下所有相关资源打包的可执行文件和app文件。

    # pyinstaller main.spec 

    4.2 APP->DMG

    使用DMG Canvas即可将APP转为dmg文件。

     
  • 相关阅读:
    C++类的成员函数的指针和mem_fun适配器的用法
    C++ RTTI的使用
    C++特殊工具与技术之RTTI
    Linux组件封装之五:生产者消费者问题
    Linux组件封装之四:RAII实现MutexLock自动化解锁
    Linux组件封装之三:Thread
    Linux组件封装之二:Condition
    Linux组件封装之一:MUtexLock
    C++ socket与Flex as3通信的沙盒问题解决
    CentOS搭建PHP环境
  • 原文地址:https://www.cnblogs.com/xqnq2007/p/8232680.html
Copyright © 2020-2023  润新知