Notas de Estudo (42): Python Programming -pyinstaller combate embalado

 

O pacote de programas pode fazer todos os PCs Windows com máquina de python virtual para uso, código conteúdos embalados além de recursos externos (como uma imagem do logotipo, etc.)

Passos:
1) criar um código de um programa
2) geram um arquivo de configuração - usado para obter um recurso embalado, o recurso será guardado nos arquivos temporários no computador para executar o programa, aqui estão os arquivos temporários pasta de recursos


3) modificar o python código fonte: Resource Directory neste momento porque os recursos não são necessariamente no diretório do programa do projeto atual, mas não se esqueça de descompactar os recursos para executar novamente quando embalado-los para um arquivo temporário


4) criar um ficheiro de configuração: tal como embalado necessidade para referenciar o ficheiro de recursos, é necessário definir manualmente o caminho do recurso, é necessário gerar um perfil de acordo acondicionador .spec,
-F PYI-makespec * py dado a ser embalado programa

 


5) Editar spc arquivo, definir o caminho que precisamos usar o arquivo de recurso para .spec aberta - encontrar datas = [], item, modificar os dados = [( "recursos", "Recursos")] é colocado dentro de uma tupla


6) embalados: pyinstaller -F * .spec


7) Se não, use o pyinstaller -F * .py,
após o fim do 8) embalados * .exe serão

 

 

'''
    将程序打包可以使得所有Windows带有python虚拟机的电脑进行使用,打包的内容有代码加外部资源(如logo图片等)

步骤:
1)创建程序的代码
2)生成配置文件——用于获得打包的资源,将资源保存在运行程序的电脑的临时文件中,这里临时文件是resources文件夹
3)修改python源代码:因为此时的程序的资源目录resources不一定在当前项目的目录下,而是在打包后再次运行时一定要将资源解压缩到临时文件当中
4)创建配置文件:因为程序打包需要引用资源文件,因此必须手工地对资源的路径进行定义,就需要根据打包程序生成一个.spec配置文件,
pyi-makespec -F *.py给定要打包的程序
5)编辑spc文件,定义我们需要使用资源路径打开.spec文件——找到datas=[],项,修改为data = [("resources","resources")]里面放的是一个元组
6)程序打包:pyinstaller -F *.spec
7)若没有则使用pyinstaller -F *.py,
8)打包结束后就会有*.exe文件了
'''

import tkinter,os#导入创建窗体的相关模块
import sys#导入与操作系统交互的模块

def get_resource_path(relative_path):#利用此函数实现资源路径的定位
    if getattr(sys,"frozen",False):
        base_path = sys._MEIPASS
    else:
        base_path = os.path.abspath(".")#获得当前目录路径
    return os.path.join(base_path,relative_path)#获得绝对路径

# image_path = image_path = r'C:\Users\jinlin\Desktop\python_further_study\GUI编程\resources'  + os.sep + 'linlianqin.gif'#只支持gif格式的图片

'''
下面这个语句提示无法找到路径提示错误,这里特别需要注意:
1)修改代码后需要重新按照以上步骤进行,尤其不能忘记了修改配置文件的datas
2)必须得先pyi-makespec -F *.py指定要打包的程序,再修改配置文件,再pyinstaller -F *.spec程序打包
'''

print(get_resource_path(os.path.join("resources","linlianqin.gif")))
image_path =  get_resource_path(os.path.join("resources","linlianqin.gif"))#修改图片的路径,从上面定义的资源路径中获取图,get_resource_path(os.path.join("临时资源文件夹","图片名称"))

class Mainwindow():#创建窗口类
    def __init__(self):
        root = tkinter.Tk()  # 创建主体窗口
        root.title('linlianqin')  # 定义窗体的名字
        root.geometry('500x500')  # 定义窗体的初始大小
        root.maxsize(1200, 1200)  # 设置窗口可以显示的最大尺寸

        #---------------以下是对按钮的设置---------------
        photo = tkinter.PhotoImage(file = image_path)#设置按钮的外观,这里是将图片设置为按钮的外观
        button = tkinter.Button(root,text = 'linlianqin',image = photo,compound = 'bottom')#创建按钮
        button.pack()#显示按钮

        root.mainloop()#显示窗口

if __name__ == '__main__':
    Mainwindow()#将窗体类实例化

 

Publicado 61 artigos originais · ganhou elogios 11 · vista 884

Acho que você gosta

Origin blog.csdn.net/qq_45769063/article/details/105207379
Recomendado
Clasificación