1.安装环境
- win10
- python3.7
- qt5.12
- pyqt5
- pyinstaller
上述安装,网上安装教程很多,只记录下自己觉得重要的踩的坑:
1.1 pyqt5在python2.7和3.7中安装指令不一样
python3安装指令: pip install PyQt5
python2安装指令: pip install python-qt5
2.配置pycharm
添加扩展插件:File-->setting-->Tools-->External Tools,如下图:
点击
+
号后,展示界面如下图:2.1 配置Desinger
- Program:
C:\Qt\Qt5.12.0\5.12.0\mingw73_64\bin\designer.exe
。配置的是安装的Qt的中的designer.exe。 - Arguments:不用填
- Working directory:
$ProjectFileDir$
可以直接复制我的,也可以点击同行位置的+
号,选择$ProjectFileDir$
。简单说就是当前工程。
上述操作就是为了通过pycharm快捷操作打开qt的designer软件
2.2 配置PyUIC
- Program:
C:\Program Files\Python37\python.exe
python的执行程序 - Arguments:
-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
就是指令,把上一步2.1操作过后保存的.ui
文件用指令编译成.py
文件 - Working directory:
$FileDir$
当前文件夹
网上教程有很多,有不一样的,但是宗旨都是用把.ui
文件用指令编译成.py
文件。不一样的无非就是路径的写法,指令的写法不同。
比如方法二:
- Program:
C:\Program Files\Python37\Scripts\pyuic5.exe
- Arguments:
$FileName$ -o $FileNameWithoutExtension$.py
- Working directory:
$FileDir$
不熟悉python的坑:
- 找不到的pyqt5中的pyuic,就去C:\Users\xxx\AppData\Roaming\Python\Python37\site-packages\PyQt5找一找
- 用管理员模式启动cmd,那么安装的pyqt5就给换安装到你的python安装目录中。也可以改
site.py
文件。
2.3 配置PyRCC
- Program:
C:\Program Files\Python37\Scripts\pyrcc5.exe
- Arguments:
-o $FileNameWithoutAllExtensions$_rc.py $FileName$
- Working directory:
$FileDir$
这个命令是把资源文件.qrc转换为.py文件。命令:pyrcc5 -o xxx.qrc xxx.py
2.4 配置PyInstaller
安装pyinstaller
pip install pyinstaller
配置
- Program:
C:\Program Files\Python37\Scripts\pyinstaller.exe
- Arguments:
-F -w -i tool.ico Main.py
- Working directory:
$FileDir$
Arguments这边我就不误导大家了,详细的可以网上自行搜索pyinstaller。这里简单说下我这里面的意思,因为我的工程入口文件是Main.py。-F(大写)就是打包成可执行文件exe -w 程序运行时不显示命令行窗口 -i 是给你的可执行程序加个图标。 tool.icon是我工程这个图标的资源名。这个资源位置和入口文件同级别。
在打包过程中可能遇到的坑,但愿你们没遇到:
- 打包成功后运行报错“No module named xxx”,网上的很多方案就是让你在Arguments:参数加 -p 指定你自定义模块的路径。如果这写方案不能解决你们的问题,你可以试着改变你的项目工程目录结构。参考1、参考2。我的理解就是把你的工程的入口文件放在最外层。
- 运行.exe,打包在exe中的配置问题。
用编译器启动和用exe启动项目,配置的相对路径是不一样的。
def getConfigPath(self):
if getattr(sys, 'frozen', False):
#可执行文件exe
curPath = os.path.realpath(sys.argv[0])[:-8]
elif __file__:
# 脚本文件
curPath = os.path.realpath(sys.path[0])
print(curPath)
configPath = curPath + "\\config.json"
return configPath
2.5 Tools的使用
- Tools → External Tools →Designer(前面配置工程工具的命名),打开qt的设计UI界面
- 选中用designer设计保存的xx.ui文件,然后再选择Tools → External Tools →PyUIC。生成xx.py文件,xx.py就是在可视化项目中引用的控件文件。
- xx.qrc→Tools → External Tools →PyRCC
- Tools → External Tools →PyInstaller 相当于一键打包。前提是前面工程配置正确。