日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

不知道有沒有菜鳥和我一樣,經常需要把Python/ target=_blank class=infotextkey>Python打包成exe,但是比較懶,雖然命令行很簡單,但是不太喜歡用命令行,嘿嘿,就干脆寫個小工具專門用來打包exe,方便自己用。

多寫代碼,就當練習了。成品如下圖。

python懶人小工具:python打包exe 小工具

 

使用效果如下圖,輸入py源文件的完整地址,點擊打包exe按鈕,然后就能在源文件目錄下的dist里打包成exe了。

python懶人小工具:python打包exe 小工具

 


python懶人小工具:python打包exe 小工具

 

原理很簡單,就是利用os.system這個函數來執行cmd命令,用pyinstaller來打包。

完整源代碼在文章末尾。

筆記時間


 

Python執行cmd命令行的方法:os.system

import os
os.system("dir")

就能執行dir命令,如果想連續執行多條命令,必須要在同一個子程里寫完,比如我們打包exe需要先cd 到源文件目錄,再用pyinstaller 打包,必須要把2條命令用&&連接起來

python懶人小工具:python打包exe 小工具

 

如果分成2個命令,如下面的寫法,這2個命令是無法連續生效的

os.system("cd C:aa")
s.system("pyinstaller -F -w 1.py")

 

pyqt5 彈出消息框 QMessageBox

彈出消息框,用QMessageBox,如下代碼

from PyQt5.QtWidgets import QMessageBox
QMessageBox.about(mainWindow, "執行結果", "恭喜!成功打包exe")

python 簡單處理文件路徑 PurewindowsPath

如下圖,用pathlib即可,可以輕松地從完整路徑類似“C:Users111.py”,得到我們想要的文件名 "1.py",得到我們要的目錄 "C:Users11"

python懶人小工具:python打包exe 小工具

 

pyqt5打包中文路徑的解決方法

這個問題我遇到很多次,因為我的windows用戶名是中文,每次打包pyqt5的程序,就會報錯,如下圖,會提示找不到pyqt5插件,困擾我很長時間,最終在網上找到了解決方案

python懶人小工具:python打包exe 小工具

 

解決方案如下

把中文路徑下的pyqt5文件夾,全部復制到一個全英文目錄下,比如復制到C:pyPyQt5,然后Pyintaller命令里加上一個 -p C:pyPyQt5 ,指定插件目錄,即可正確編譯成exe!

 

其他的沒什么了,這個比較簡單,常見的pyqt5 gui,控件綁定函數之類的可以參見我之前的筆記。

完整源碼如下

main.py

import Ui_py2exe
import sys
from PyQt5.QtWidgets import QApplication,QMainWindow,QMessageBox
import os
from pathlib import PureWindowsPath

def dabao():
    fullpath=ui.lineEdit.text()
    f=PureWindowsPath(fullpath)
    filedir=fullpath.replace(f.name,"")
    if ui.checkBox.isChecked()==True:
        second=os.system("cd "+filedir+"&&pyinstaller -F -w "+fullpath)
        if second==0 :
            QMessageBox.about(mainWindow, "執行結果", "恭喜!成功打包exe")
        else:
            QMessageBox.about(mainWindow, "執行結果", "未知錯誤")
    else:
        second=os.system("cd "+filedir+"&&pyinstaller -F "+fullpath)
        if second==0 :
            QMessageBox.about(mainWindow, "執行結果", "恭喜,成功打包exe")
        else:
            QMessageBox.about(mainWindow, "執行結果", "未知錯誤")

if __name__=="__main__":
    app=QApplication(sys.argv)
    #創建一個窗口
    mainWindow=QMainWindow()
    ui=Ui_py2exe.Ui_MainWindow()
    ui.setupUi(mainWindow)
    ui.pushButton_2.clicked.connect(dabao)
    mainWindow.show()
    sys.exit(app.exec_())

還有一個qtdesigner生成的ui文件

Ui_py2exe.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'c:Users譚鴻偉Documentspythonworks10-py2exepy2exe.ui'
#
# Created by: PyQt5 UI code generator 5.15.2
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(650, 290)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(180, 20, 381, 31))
        self.lineEdit.setObjectName("lineEdit")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(70, 30, 101, 16))
        self.label.setObjectName("label")
        self.checkBox = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox.setGeometry(QtCore.QRect(310, 120, 141, 21))
        self.checkBox.setObjectName("checkBox")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(230, 160, 271, 31))
        self.pushButton_2.setObjectName("pushButton_2")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(80, 80, 81, 16))
        self.label_2.setObjectName("label_2")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_2.setGeometry(QtCore.QRect(180, 70, 381, 31))
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(170, 200, 431, 31))
        font = QtGui.QFont()
        font.setPointSize(15)
        self.label_3.setFont(font)
        self.label_3.setObjectName("label_3")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 650, 23))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "py2exe by 愛在初夏夜"))
        self.label.setText(_translate("MainWindow", "Py文件完整路徑:"))
        self.checkBox.setText(_translate("MainWindow", "隱藏CMD窗口"))
        self.pushButton_2.setText(_translate("MainWindow", "包成exe"))
        self.label_2.setText(_translate("MainWindow", "文件圖標路徑:"))
        self.label_3.setText(_translate("MainWindow", "exe保存路徑為源文件所在文件夾的dist目錄里"))

分享到:
標簽:打包 python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定