在不久前我的另一篇博文Pyqt5 MacOS 环境搭建中介绍了如何在 Mac 上搭建 PyQt 的环境, 如果你恰巧看过那篇文章, 并且照做了, 那么非常不幸, 如果你打算使用 pyqtdeploy 发布的你的程序的话, 你可能得重新来一遍了!

我们需要准备几个几个东西:

  1. 这里下载 python 3.x 的源码包.
  2. 这里下载 sip 的源码包.
  3. 这里下载与你 qt 版本对应的 PyQt 的源码包.

注: 不要下载 3.5 , 因为后面某一步骤时会出错. – 2015年11月29日

一. 安装

1. 安装 python3 :

因为 pyqtdeploy 要求 PyQt5 和 Python v3.2 或更高的版本, 因此我们需要安装 python3, 这里要记下你的 python 主要版本号 (e.g. 3.4), 后面会用到.

解压下载好的 python3 源码, 开启终端 cd 进这个目录:

1
./configure

等待结束后执行 make, 没有错误的话 make install .

##2. 安装 sip :

因为某些未知的原因, 我们需要先使用 brew 安装 sip:

1
brew install sip --with-python3

然后解压下载好的源码包, 打开终端 cd 进解压好的目录:

1
python3 configure.py --static --target-py-version=VERSION

替换 VERSION 为你的 python3 版本号, --static 是将 sip 编译为静态库的, 我们使用 brew 安装的 sip 没有生成静态库, 因此我们需要手动安装.

等待成功后, 执行 make && make install.

因为上一步会会覆盖 brew 安装的 sip 的执行文件, 所以我们需要重新 link 一下.

1
brew link --overwrite sip

然后我们brew info sip, 可以找到类似的一个路径:

1
/usr/local/Cellar/sip/4.16.9

在这个路径下有一个 include 文件夹, 这个文件夹的路径就是就是我们下面安装 PyQt 所需的路径.

##3. 安装 PyQt

这一步需要知道 qmake 的路径, 因此我们需将它所在目录加入到环境变量中:

1
export PATH=/path/of/your/Qt/clang_64/bin:$PATH

最终我们会输入这样的一行指令:

1
python3 configure.py --sip-incdir=PATH --target-py-version=VERSION --static

将上面的 PATH 修改为上面获取到的路径(e.g. /usr/local/Cellar/sip/4.16.9/include), 同时 VERSION 替换为你的 python 版本.

提示 Do you accept the terms of the license? 时输入 yes.

等待成功后,执行 make, 这一步需要编译好多东西, 可能会需要好久. 若是没有什么错误的话, 执行 make install.

##4. 安装 pyqtdeploy

安装好前面那些之后, 这一步变得十分简单:

1
pip3 install pyqtdeploy

到此为止, 我们 pyqtdeploy 的环境就搭建好了, 在任意目录输入 pyqtdeploy, 看到下面这个界面就算成功了:

二. 使用

关于 pyqtdeploy 的使用还是建议大家看看官方文档, 写的非常详细, 开始我寻求其他人写的教程, 但竟无一篇中文教程, 英文也寥寥无几, 最后还是回去啃文档. 下面介绍一下我的配置是什么, 至于期间踩坑无数, 自不足为外人道也.

首先我要创建一个 pdy 文件, pdy 是 pyqtdeploy 的工程配置文件. 需要注意的一点是, pdy 文件一定要保存在程序入口 py 文件的同级目录. 首先在你的项目源码目录中打开终端, 键入命令 pyqtdeploy xxx.pdy,(替换xxx为你想起的文件名) 然后就会弹出一个gui界面.

1. Application Source:

Name: 填入你程序的名称
Main Script file: 程序的入口文件
Application Package Directory: 程序的其他 py 文件

2. qmake

这一页没有什么特别的设置

3. PyQt Modules

这一页中你的项目中使用了什么模块就勾选什么模块就可以了.

4. Standard Library

默认设置

5. Other Packages

默认设置

6. Other Extension Modules

默认设置

7. Locations

这一页的设置是重中之重, 曾在这里浪费了很多的时间.

Interpreter: python 可执行文件路径
Source directory: 还记得我们之前下载的 python 源码, 解压到一个目录, 填写路径到这里就ok了 !
Include directory: python 的头文件路径
Python library: python 的静态库文件路径
Standard python library: python 标准库文件路径
Build directory: 构建用路径
qmake: qmake 文件路径

8. Build

这一页必要重要的是勾选 Verbose output , 这样子出错了能够比较准确的定位. 另外勾选 Additional Build Steps, 可以帮你编译运行.

三. Q&A

  1. ImportError: No module named xxx

如果这个模块是你项目的一个本地依赖模块, 那么请检查你的 pdy 文件是否保存在代码入口文件的同一级目录.

  1. error: use of undeclared identifier ‘_Py_BEGIN_SUPPRESS_IPH’

是否使用了 python3.5 , 我切换为 python3.4 就 ok 了!


转眼间又过去了一个月多月, 每周一篇好不容易坚持了3周就这样断掉了. 主要原因是还是懒, 次要原因是公司项目即将上线, 所以工作比平时要紧张好多, 最近两周周六也开始加班了! 对目前这个项目还是比较看好的, 加油!

下次分享下我在最近这次热更新上的一些收获!