Rumah >pembangunan bahagian belakang >Tutorial Python >Alat untuk melaksanakan program pembungkusan kelompok menggunakan Python~

Alat untuk melaksanakan program pembungkusan kelompok menggunakan Python~

王林
王林ke hadapan
2023-04-18 21:22:012150semak imbas

Alat untuk melaksanakan program pembungkusan kelompok menggunakan Python~

Baru-baru ini saya membaca beberapa artikel tentang alat pembungkusan visual auto-py-to-exe yang disiarkan oleh beberapa orang besar Auto-py-to-exe adalah berdasarkan pyinstaller, tetapi dibandingkan dengan pyinstaller, Ia mempunyai antara muka GUI. Saya juga mencubanya sendiri dan mendapati ia sangat berguna dan mudah Anda boleh membungkus program dengan hanya beberapa klik.

Tetapi saya mendapati bahawa auto-py-to-exe mahupun pyinstaller tidak boleh membungkus secara langsung berbilang program pada satu masa Jika anda ingin membungkus berbilang program, anda perlu melakukannya sekali lagi, jadi untuk pengaturcara, ini adalah perkara yang tidak boleh diterima. Berdasarkan ini, saya menulis program pembungkusan kelompok kecil berdasarkan pyinstaller.

Atur cara memanggil arahan cmd

Atur cara pembungkusan pyinstaller perlu menggunakan arahan cmd Berikut ialah pengenalan ringkas kepada kaedah biasa memanggil arahan cmd.

os.system()

system() ialah fungsi yang dibina ke dalam modul os, yang boleh menukar rentetan kepada arahan dan melaksanakannya dalam terminal:

def system(*args, **kwargs): # real signature unknown
 """ Execute the command in a subshell. """
 pass

Gunakan kaedah ini Sangat mudah Anda hanya perlu meletakkan arahan untuk dilaksanakan ke dalam fungsi dalam bentuk rentetan:

import os
os.system(f'pyinstaller -F -w D:程序.py')

Apabila melaksanakan arahan, tetingkap cmd tidak akan muncul akan dipaparkan dalam IDE secara lalai. Fail yang dihasilkan akan berada dalam Dalam direktori yang sama:

Alat untuk melaksanakan program pembungkusan kelompok menggunakan Python~

os.popen()

kaedah popen() juga merupakan fungsi terbina dalam modul os, yang dilaksanakan melalui saluran paip dan mengembalikan nilai Merupakan objek fail yang boleh dibaca dan ditulis. Lalai kepada bacaan 'r'. Kandungan output boleh dibaca dengan memanggil kaedah read() atau readlines() bagi objek Berikut ialah kod sumber:

def popen(cmd, mode="r", buffering=-1):
 if not isinstance(cmd, str):
 raise TypeError("invalid cmd type (%s, expected string)" % type(cmd))
 if mode not in ("r", "w"):
 raise ValueError("invalid mode %r" % mode)
 if buffering == 0 or buffering is None:
 raise ValueError("popen() does not support unbuffered streams")
 import subprocess, io
 if mode == "r":
 proc = subprocess.Popen(cmd,
 shell=True,
 stdout=subprocess.PIPE,
 bufsize=buffering)
 return _wrap_close(io.TextIOWrapper(proc.stdout), proc)
 else:
 proc = subprocess.Popen(cmd,
 shell=True,
 stdin=subprocess.PIPE,
 bufsize=buffering)
 return _wrap_close(io.TextIOWrapper(proc.stdin), proc)

Penggunaan hanya perlu memasukkan parameter yang diperlukan dan laksanakan dengan membaca. atau menulis:

os.popen(f'pyinstaller -F -w D:程序.py').read()

Hasil pelaksanaan adalah sama seperti os.system(), dan fail yang dijana berada dalam direktori yang sama.

subprocess.run()

Modul subprocess digunakan secara rasmi untuk menggantikan beberapa kaedah modul lama Ia mengandungi banyak kaedah kandungan dan lebih maju daripada os.system() dan os.popen(. ). Untuk menambah baik beberapa. Modul subproses mempunyai pelbagai kaedah untuk memanggil arahan cmd, iaitu Popen, call, run, dan getstatusoutput Di sini kami hanya menerangkan secara ringkas kaedah run().

Fungsi subprocess.run() melaksanakan perintah yang ditentukan, menunggu arahan untuk dilaksanakan dan mengembalikan contoh kelas CompletedProcess yang mengandungi hasil pelaksanaan.

Penggunaan adalah sama dengan kaedah os.system() dan os.popen(), menghantar perintah rentetan, tetapi pemilihan parameter adalah lebih daripada os.system() dan os.popen():

subprocess.run(f'pyinstaller -F -w D:程序.py')

Kaedah ini tidak mengembalikan output secara lalai, hanya perintah dan status pelaksanaan.

Pelaksanaan Program

Kami telah mengetahui cara berbilang atur cara memanggil arahan cmd Artikel ini menggunakan kaedah penggunaannya sangat mudah. anda boleh Buat kajian mendalam.

Pustaka yang digunakan untuk membina GUI ialah PySimpleGUI:

import os
import PySimpleGUI as sg

Jika ia belum dipasang lagi, anda boleh menggunakan arahan pip untuk memasangnya:

pip intsall 库名

Reka bentuk antara muka GUI

Oleh kerana tiada keperluan khas untuk fungsi tersebut, ia hanya perlu membungkus berbilang program dengan hanya satu operasi Kod reka bentuk akhir adalah seperti berikut:

# 主题设置
sg.theme('LightBrown3')
# 布局设置
layout = [
 [sg.Frame(layout=[
 [
 sg.InputText(key='please_select_file', size=(24, 1), font=("微软雅黑", 10), enable_events=True),
 # FileBrowse 只能选择单个文件 FilesBrowse加入s可以选择多个文件
 sg.FilesBrowse('获取文件', file_types=(("Text Files", "*.py"),), font=("微软雅黑", 10)),
 ],
 ],
 title='选择文件', title_color='blue', font=("微软雅黑", 10), relief=sg.RELIEF_SUNKEN, )],
 [sg.Button('开始打包', font=("微软雅黑", 10)),
sg.Text('', font=("微软雅黑", 10), size=(16, 0)), sg.Button('退出程序', font=("微软雅黑", 10), button_color='red')]# button_color blue red
]
# 创建窗口
window = sg.Window('打包工具', layout, font=("微软雅黑", 12), default_element_size=(30, 1))

Antara muka adalah seperti berikut:

Alat untuk melaksanakan program pembungkusan kelompok menggunakan Python~

Antara muka widget

Reka bentuk logik

Laluan fail yang diperoleh melalui antara muka dipisahkan oleh " ;", dan perlu dibahagikan kemudian:

valuelist = []
# 事件循环
while True:
 # 退出按钮
 event, values = window.read()
 if event in (None, '退出程序'):
 break
 # 打开文件按钮
 if event == 'please_select_file':
 fileName = values['please_select_file']
 # 得到的文件路径是以 “;”相分隔的,传入列表
 valuelist.append(fileName)
 if event == '开始打包':
 if len(valuelist) != 0:
# 传入打包函数
 pyinstaller_(valuelist)
 else:
 sg.popup('文件未选择!')

Fungsi pembungkusan

Fungsi menerima senarai, yang perlu dibaca melalui gelung; laluan yang dibahagikan dengan pemisahan akan menghasilkan senarai, yang masih perlu dibaca melalui gelung; Perbandingan kesan pembungkusan program Tunggal, -F dan -w masing-masing menghasilkan satu fail boleh laku dan membatalkan paparan tetingkap baris arahan:

def pyinstaller_(valuelist):
 for i in valuelist:
 a = i.split(';')
 for x in a:
 os.system(f'pyinstaller -F -w {x}')

fail boleh laku .exe yang dijana akhir disimpan dalam fail dist:

Alat untuk melaksanakan program pembungkusan kelompok menggunakan Python~

Fail .exe hasil

Kebaikan dan keburukan alat:

  • Kelebihan: Kesan alat adalah untuk orang yang mempunyai keperluan lain , tidak begitu berguna, tetapi ia masih berguna untuk orang yang perlu membungkus pelbagai program Lagipun, operasi berulang mesti ditolak.
  • Kelemahan: Kelemahan alat adalah jelas ia tidak boleh beroperasi pada ikon program berpakej, dsb., dan apabila melaksanakan arahan, ia hanya boleh dilaksanakan satu demi satu, yang mengurangkan kecekapan dan memerlukannya. penyelarasan benang dan proses.

Pada ketika ini, kami telah berjaya menggunakan Python untuk menyelesaikan keperluan untuk pembungkusan kelompok program dan membebaskan tangan kami.

Atas ialah kandungan terperinci Alat untuk melaksanakan program pembungkusan kelompok menggunakan Python~. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam