日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

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

發(fā)布時(shí)間:2024/1/8 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python懒人小工具:python打包exe 小工具 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

不知道有沒(méi)有菜鳥(niǎo)和我一樣,經(jīng)常需要把python打包成exe,但是比較懶,雖然命令行很簡(jiǎn)單,但是不太喜歡用命令行,嘿嘿,就干脆寫(xiě)個(gè)小工具專門(mén)用來(lái)打包exe,方便自己用。

多寫(xiě)代碼,就當(dāng)練習(xí)了。成品如下圖。

?

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

?

?

原理很簡(jiǎn)單,就是利用os.system這個(gè)函數(shù)來(lái)執(zhí)行cmd命令,用pyinstaller來(lái)打包。

完整源代碼在文章末尾。

筆記時(shí)間


?

Python執(zhí)行cmd命令行的方法:os.system

import os os.system("dir")

就能執(zhí)行dir命令,如果想連續(xù)執(zhí)行多條命令,必須要在同一個(gè)子程里寫(xiě)完,比如我們打包exe需要先cd 到源文件目錄,再用pyinstaller 打包,必須要把2條命令用&&連接起來(lái)

?

如果分成2個(gè)命令,如下面的寫(xiě)法,這2個(gè)命令是無(wú)法連續(xù)生效的

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

?

pyqt5 彈出消息框 QMessageBox

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

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

python 簡(jiǎn)單處理文件路徑 PureWindowsPath

如下圖,用pathlib即可,可以輕松地從完整路徑類(lèi)似“C:\Users\11\1.py”,得到我們想要的文件名 "1.py",得到我們要的目錄 "C:\Users\11\"

?

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

這個(gè)問(wèn)題我遇到很多次,因?yàn)槲业膚indows用戶名是中文,每次打包pyqt5的程序,就會(huì)報(bào)錯(cuò),如下圖,會(huì)提示找不到pyqt5插件,困擾我很長(zhǎng)時(shí)間,最終在網(wǎng)上找到了解決方案

?

解決方案如下

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

?

其他的沒(méi)什么了,這個(gè)比較簡(jiǎn)單,常見(jiàn)的pyqt5 gui,控件綁定函數(shù)之類(lèi)的可以參見(jiàn)我之前的筆記。

完整源碼如下

main.py

import Ui_py2exe import sys from PyQt5.QtWidgets import QApplication,QMainWindow,QMessageBox import os from pathlib import PureWindowsPathdef 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, "執(zhí)行結(jié)果", "恭喜!成功打包exe")else:QMessageBox.about(mainWindow, "執(zhí)行結(jié)果", "未知錯(cuò)誤")else:second=os.system("cd "+filedir+"&&pyinstaller -F "+fullpath)if second==0 :QMessageBox.about(mainWindow, "執(zhí)行結(jié)果", "恭喜,成功打包exe")else:QMessageBox.about(mainWindow, "執(zhí)行結(jié)果", "未知錯(cuò)誤")if __name__=="__main__":app=QApplication(sys.argv)#創(chuàng)建一個(gè)窗口mainWindow=QMainWindow()ui=Ui_py2exe.Ui_MainWindow()ui.setupUi(mainWindow)ui.pushButton_2.clicked.connect(dabao)mainWindow.show()sys.exit(app.exec_())

還有一個(gè)qtdesigner生成的ui文件

Ui_py2exe.py

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'c:\Users\譚鴻偉\Documents\pythonworks\10-py2exe\py2exe.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, QtWidgetsclass 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.translateMainWindow.setWindowTitle(_translate("MainWindow", "py2exe by 愛(ài)在初夏夜"))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", "文件圖標(biāo)路徑:"))self.label_3.setText(_translate("MainWindow", "exe保存路徑為源文件所在文件夾的dist目錄里"))

總結(jié)

以上是生活随笔為你收集整理的python懒人小工具:python打包exe 小工具的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。