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文件。

 

pyqt5生成的APP制作DMG的更多相关文章

  1. 简单5步说清App软件在线开发、App制作多少钱?

    开发制作一款App,所有人都会首先关心开发一款App多少钱这个问题.从网上的信息来看,花费个几十万是很正常的事情,甚至有人说要花上百万才能制作出一款App.那么App软件的开发制作到底和什么有关?怎么 ...

  2. 应用之星推出“图文app”制作工具,并附上教程

    应用之星已推出的"图文"app制作工具,是高速制作图文电子书,图文杂志等一切有关图文资料的app生成工具,以下跟大家介绍"图文"制作教程,简单快捷,大致分三大步 ...

  3. 移动开发平台-应用之星app制作教程

    目前在AppStore.GooglePlay等应用商店里已经有以百万计的Apps,应用程序使移动互联网空间得以无限拓展.很多人梦想着AngryBirds式的奇迹在自己身上发生,他们渴望自己开发的应用程 ...

  4. Python 爬取 热词并进行分类数据分析-[App制作]

    日期:2020.02.14 博客期:154 星期五 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...

  5. ionic构建APP--简单操作实现APP制作

    ionic--基于AngularJS的app框架 1安装ionic .HBuilder创建APP项目,导入ionic的css,js(fonts)文件. .导入ionic.css和ionic.bundl ...

  6. 把网站打包快速在线生成ios app的正确方法

    下方的内容不用看了,请点这里 !点这里!IOS APP自助生成系统已上线,请马上去了解下: http://www.tao-jiujiu.com/post/188.html  ============= ...

  7. Web app制作细节:web app互动制作技巧

    Google .微软.苹果三大巨头紧锣密鼓地在web app的研发产品领域圈地设岗,并试图建立以自己为中心的”云“服务平台,企图在web app时代到来的时候充当霸主.本文将围绕web app的制作, ...

  8. 在线生成安卓APP图标

    移动应用图标/启动图生成工具,一键生成所有尺寸的应用图标/启动图 在线生成安卓APP图标生成 图标在 线 在线图标 安卓图标 生成图标 https://icon.wuruihong.com/ 在线pn ...

  9. spyder.app制作图标

    安装了 anaconda3, 自带spyder, 但是只能在terminal 中打开, 非常不友好. 模仿 anaconda3/目录下 Anaconda-Navigator.app, 制作了 spyd ...

随机推荐

  1. 给mongodb设置密码权限

    昨天装了个mongodb数据库用于测试用,装好后没有密码,现在就讲讲怎么设置密码 1.首先进入C:\mongodb\bin下面运行mongod.exe启动数据库. 2.在相同目录下启动mongo.ex ...

  2. Linux 日志系统及分析

    简介 在Centos 7.x / RHEL 7.x 的版本,系统日志是由一个名为 rsyslog的服务管理的,默认的日志守护进程为 rsyslog , rsyslog 是 syslog 的升级版本,默 ...

  3. jmeter压力测试案例实战

    1.  测试目标地址:http://www.cnblogs.com/ 2.  1秒内有100个用户同时访问,看性能如何 3.  步骤 线程组.http请求.查看结果树.聚合报告 添加http请求如下: ...

  4. linux的rpm教程

    1.rmp查询 1.1 软件包详细信息 rpm -qpi  httpd-2.4.25-9.fc27.x86_64.rpm 系统将会列出这个软件包的详细资料,包括含有多少个文件.各文件名称.文件大小.创 ...

  5. TP-LINK路由器设置内网的一台电脑在外网可以远程操控

    1.[IP和MAC绑定]--[静态ARP绑定设置]对MAC和IP进行绑定 2.[转发规则]--[DMZ主机],选择启用并把刚才设置的内网IP填入 3.直接访问路由器的外网IP就可以直接访问绑定的MAC ...

  6. umount.nfs: device is busy解决办法

    fuser -km /app/nfs/ https://blog.csdn.net/x_i_y_u_e/article/details/42914817

  7. 【JBPM4】判断节点decision 方法2 condition

    运用condition计算并判断. JPDL <?xml version="1.0" encoding="UTF-8"?> <process ...

  8. 解决Gradle报错找不到org.gradle.api.internal.project.ProjectInternal.getPluginManager()方法问题

    因为本地的AndroidStudio很久没用了,所以想要研究下github上的某个代码的时候,还得重新配下环境 打开了几个项目,都是提示如下错误 Error:Unable to find method ...

  9. Template Mode 'HTML5' is deprecated与UnsatisfiedDependencyException

    org.thymeleaf.templatemode.TemplateMode : [THYMELEAF][main] Template Mode 'HTML5' is deprecated. Usi ...

  10. android studio偏好设置

    1.主题设置,可以选择白色主题及黑色主题 2.代码字体大小 3.生成新的主题 主题命名 4.加入代码时,自动引用库 5.合作菜单生成菜码 6.命名空间设置 字段设置为大写,静态字段设置为小写 SDK设 ...