mac python3 + pyqt5+ pyinstaller

对于iOS开发不要随便拆卸系统自带的Python,因为有很多 library 还是使用 Python2.7。


一、python3和pip3、pyqt5安装

1 安装Xcode

  • App Store 搜索Xcode 并安装

  • 安装 Xcode command line tool

xcode-select --install

2 安装套件管理工具 Homebrew

  • 安装 Homebrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

  • 查看是否安装成功

brew doctor

3 安装Python3

brew install python3

4 确认安装

  • 系统自带的python2.7,目录为/usr/bin/python

which python

  • brew安装的python3.4,目录为/usr/local/bin/python3

which python3

5 检测安装成功

  • 系统自带的

python -V

  • brew安装的

python3 -V

6 安装pip

  • 6.1 系统自带的python没有pip,只有easy_install

系统的python安装pip,系统的python安装pip需要root权限

sudo easy_install pip

  • 6.2 Python3 安装pip

brew install python3 or brew reinstall python3
如果安装失败,使用下面的方式安装:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py
  • 6.3 使用pip

// 系统自带的

pip --version

//brew安装的

pip3 --version

7 安装sip


//PyQt5对sip有依赖,需要先安装

pip3 install sip

8 安装PyQt5

pip3 install PyQt5

9 mac下需要额外安装qadesigner,两条命令

brew install qt
brew install qt-creator

10安装过程的异常处理

  • 如果出现link error
    Error: The brew link step did not complete successfully...
    可以使用如下命令解决,哪个文件夹不对就处理哪个
    sudo chown -R "$USER":admin /usr/local
  • 如果出现sudo权限不足:permission denied,可以参考下面的链接
    https://www.jianshu.com/p/5c4518584fa7

11qt设计器.ui文件转化为.py文件

pyuic5 -o mainwindow.py mainwindow.ui


二、使用pyinstaller打包

几种不同的打包工具都试用了下,pyinstaller应该是最好用的,主要是一直有人维护。
然后在 terminal 中依次键入,:

pyinstaller --windowed --onefile --clean --noconfirm main.py
pyinstaller --clean --noconfirm --windowed --onefile main.spec

其中,如果要自行设计 Mac 系统下的图标的话,那么可以替换第 1 条指令为:
pyinstaller --windowed --onefile --icon=sat_tool_icon.icns --clean --noconfirm main.py
其中图片转换地址为 https://iconverticons.com/online/
可见第一部是生成打包规则文件。

常见问题

打包是时候常常有外部数据源的需求,可以参考如下链接:

解决办法:https://www.xncoding.com/2015/09/07/python/pyinstaller.html

对于mac下单pyqt打包,还会出现精度变低的问题,解决方法:

  • 方法一:
    在打包出的app里面的info.plist里面添加:
    NSHighResolutionCapable
    
    NSPrincipalClass
    NSApplication
  • 方法二:
    修改上面生成的spec的规则文件:
info_plist = {
    "NSHighResolutionCapable": True,
    "NSPrincipalClass":'NSApplication'
}

app = BUNDLE(exe,
             name='reminder_dj.app',
             info_plist=info_plist,
...

你可能感兴趣的:(mac python3 + pyqt5+ pyinstaller)