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

 
05-06 20:55