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文件。
pyqt5生成的APP制作DMG的更多相关文章
- 简单5步说清App软件在线开发、App制作多少钱?
开发制作一款App,所有人都会首先关心开发一款App多少钱这个问题.从网上的信息来看,花费个几十万是很正常的事情,甚至有人说要花上百万才能制作出一款App.那么App软件的开发制作到底和什么有关?怎么 ...
- 应用之星推出“图文app”制作工具,并附上教程
应用之星已推出的"图文"app制作工具,是高速制作图文电子书,图文杂志等一切有关图文资料的app生成工具,以下跟大家介绍"图文"制作教程,简单快捷,大致分三大步 ...
- 移动开发平台-应用之星app制作教程
目前在AppStore.GooglePlay等应用商店里已经有以百万计的Apps,应用程序使移动互联网空间得以无限拓展.很多人梦想着AngryBirds式的奇迹在自己身上发生,他们渴望自己开发的应用程 ...
- Python 爬取 热词并进行分类数据分析-[App制作]
日期:2020.02.14 博客期:154 星期五 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...
- ionic构建APP--简单操作实现APP制作
ionic--基于AngularJS的app框架 1安装ionic .HBuilder创建APP项目,导入ionic的css,js(fonts)文件. .导入ionic.css和ionic.bundl ...
- 把网站打包快速在线生成ios app的正确方法
下方的内容不用看了,请点这里 !点这里!IOS APP自助生成系统已上线,请马上去了解下: http://www.tao-jiujiu.com/post/188.html ============= ...
- Web app制作细节:web app互动制作技巧
Google .微软.苹果三大巨头紧锣密鼓地在web app的研发产品领域圈地设岗,并试图建立以自己为中心的”云“服务平台,企图在web app时代到来的时候充当霸主.本文将围绕web app的制作, ...
- 在线生成安卓APP图标
移动应用图标/启动图生成工具,一键生成所有尺寸的应用图标/启动图 在线生成安卓APP图标生成 图标在 线 在线图标 安卓图标 生成图标 https://icon.wuruihong.com/ 在线pn ...
- spyder.app制作图标
安装了 anaconda3, 自带spyder, 但是只能在terminal 中打开, 非常不友好. 模仿 anaconda3/目录下 Anaconda-Navigator.app, 制作了 spyd ...
随机推荐
- Leetcode 之Regular Expression Matching(31)
正则表达式的匹配,还是挺难的.可根据下一个字符是不是*分为两种情况处理,需要考虑多种情况. bool isMatch(const char *s, const char *p) { if (*p == ...
- Guice2.0的变化——第一部分 新的特性(上)
http://superleo.iteye.com/blog/314816 Private Modules PrivateModules 用于创建并不需要对外可见的绑定对象.当然,这样会使得封装变得更 ...
- display:flex代替float
昨天做一个css的东西,在开始用js的时候才发现被float占位了 因为float浮动起来了,我清除了浮动,但是还是占位 然后我同事就告诉我其实可以不用float来左右浮动 在父元素上用display ...
- 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记9——游戏摄像机&三维地形的构建
第21章 游戏摄像机的构建 之前的程序示例,都是通过封装的DirectInput类来处理键盘和鼠标的输入,对应地改变我们人物模型的世界矩阵来达到移动物体,改变观察点的效果.其实我们的观察方向乃至观察点 ...
- 深入解析当下大热的前后端分离组件django-rest_framework系列二
视图三部曲 一部曲 · 使用混合(mixins) 上一节的视图部分: from rest_framework.views import APIView from rest_framework.resp ...
- react native android应用启动画面
参考地址:https://www.youtube.com/watch?v=rnLR65OGtic 第一步:生成启动画面的背景图片 生成一个2048*2048的背景图片,打开网站https://apet ...
- python的递归函数
1.如果一个函数在内部调用自身本身,这个函数就是递归函数. 例:计算 n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以看出: fact(n) = n! = 1 x 2 ...
- Codeforces 补题记录
首先总结一下前段时间遇到过的一些有意思的题. Round #474 (Div. 1 + Div. 2, combined) Problem G 其实关键就是n这个数在排列中的位置. 这样对于一个排 ...
- 我的第一篇博客:不用sizeof求int的bit数
我的第一篇博客.. 还不会什么高端的东西就来点基础的. 不用sizeof求int的bit数 //不用sizeof求int的bit数 #include<stdio.h> int main( ...
- 第4天:Ansible模块
Ansible对远程服务器的实际操作实际是通过模块完成的,其工作原理如下: 1)将模块拷贝到远程服务器 2)执行模块定义的操做,完成对服务器的修改 3)在远程服务器中删除模块 需要说明的是,Ansib ...