1. 程式人生 > >PyQt5.6 + pycharm 配置 以及 pyinstaller 生成exe 傻瓜教程 100%成功

PyQt5.6 + pycharm 配置 以及 pyinstaller 生成exe 傻瓜教程 100%成功

1.根據自己的系統和python版本下載安裝,我用的是:

PyQt5-5.6-gpl-Py3.5-Qt5.6.0-x32-2.exe

python-3.5.4.exe

pycharm裝的是破解版

以上按次序依次安裝,都按照預設路徑安裝即可。

2.開啟pycharm





2.因為我用來寫了一個串列埠工具,所以程式碼很多,就不貼了,外加一個用pyqt 畫的一個介面

開啟pyqt -->  designer..拖拽方式生成一個介面


儲存到剛才新建的python工程目錄下,和 xxx.py一個目錄。檔案字尾位xxx.ui

3.在pycharm 會自動把ui檔案加入到工程中。

4.寫py程式碼

import sys
import time
import serial
import serial.tools.list_ports
import threading
from ctypes import *
from PyQt5  import QtGui,QtCore,uic,QtWidgets
import crc
import os
#import six
# Define function to import external files when using PyInstaller.
def resource_path(relative_path):
    """ Get absolute path to resource, works for dev and for PyInstaller """
try: # PyInstaller creates a temp folder and stores path in _MEIPASS base_path = sys._MEIPASS except Exception: base_path = os.path.abspath(".") return os.path.join(base_path, relative_path) qtCreatorFile = ".\mainWind.ui" # Enter file here. Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)
以下省略....................................
5.設定解析器。




4。到這裡,你應該可以正常運行了。如果還有問題,那就是記得給PyQt加環境變數,在PATH中。


我的是:

C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\Lib\site-packages\PyQt5;

C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\Lib\site-packages\PyQt5\plugins;

C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32

5.下面難點來了,如何用Pyinstaller 打包成exe   ,到別人的電腦也可以直接執行。

pyinstaller 有兩種安裝,一種是Pycharm  上面提到的綠色 “+”號裡面新增,這個最簡單,還有用pip.安裝或者自己去下載安裝,記得下載最新的,要支援python 3.x以上

我是用pycharm安裝的,非常省心。

6.執行CMD命令,


最後會有一個dist目錄,下面有一個xxx.exe檔案,你直接執行,發現


這是因為剛才QT畫的 ui檔案沒有包進來,所以,可以把剛才的xxx.ui檔案複製到和exe同一個目錄下。


然後雙擊可以運行了。

6.可以拷貝這兩個檔案到別人的電腦運行了。。。

但是有可能還有一個問題。

This application failed to start because it could not find or load the Qt platfo rm plugin "windows" in "". Reinstalling the application may fix this problem


這個問題我找了很久,終於發現瞭解決辦法,那就是拷貝你開發軟體電腦,安裝的pyqt目錄下的platform資料夾拷貝到和exe同一個目錄,即可。



4.然後就可以看到漂亮的介面了。第一次執行出來的時間有點慢,慢慢等就出來了。。。。。