【python】pyinstaller 打包

版权声明: https://blog.csdn.net/staHuri/article/details/81747423

起因

  • 明日七夕好友表白在网上找到一个表白工具,地址如下 python表白工具
  • 由于需要使用python才可以运行,故而使用pyinstaller 进行打包

代码说明

  • 本文表白代码来自代码
  • 文件路径 这里写图片描述
import sys
import random
import pygame
from pygame.locals import *

WIDTH, HEIGHT = 640, 480
BACKGROUND = (0, 191, 255)


# 按钮
def button(text, x, y, w, h, color, screen):
    pygame.draw.rect(screen, color, (x, y, w, h))
    font = pygame.font.Font(fontfontfont(), 20)
    textRender = font.render(text, True, (0, 0, 0))
    textRect = textRender.get_rect()
    textRect.center = ((x + w / 2), (y + h / 2))
    screen.blit(textRender, textRect)


# 标题
def title(text, screen, scale, color=(255, 0, 0)):
    font = pygame.font.Font(fontfontfont(), WIDTH // (len(text) * 2))
    textRender = font.render(text, True, color)
    textRect = textRender.get_rect()
    textRect.midtop = (WIDTH / scale[0], HEIGHT / scale[1])
    screen.blit(textRender, textRect)


# 生成随机的位置坐标
def get_random_pos():
    x, y = random.randint(20, 620), random.randint(20, 460)
    return x, y


# 点击喜欢按钮后显示的页面
def show_like_interface(text, screen, color=(255, 0, 0)):
    screen.fill(BACKGROUND)
    font = pygame.font.Font(fontfontfont(), WIDTH // (len(text)))
    textRender = font.render(text, True, color)
    textRect = textRender.get_rect()
    textRect.midtop = (WIDTH / 2, HEIGHT / 2)
    screen.blit(textRender, textRect)
    pygame.display.update()
    while True:
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()


# 主函数
def main():
    pygame.init()
    screen = pygame.display.set_mode((WIDTH, HEIGHT), 0, 32)
    pygame.display.set_caption('FROM一个喜欢你很久的小哥哥')
    clock = pygame.time.Clock()
    pygame.mixer.music.load(mpmpmp())
    pygame.mixer.music.play()

    # sleep(60)
    #
    # pygame.mixer.music.stop()

    pygame.mixer.music.set_volume(0.25)

    #
    unlike_pos_x = 330
    unlike_pos_y = 300
    unlike_pos_width = 100
    unlike_pos_height = 50
    like_pos_x = 180
    like_pos_y = 300
    like_pos_width = 100
    like_pos_height = 50
    running = True
    like_color = (255, 0, 255)
    while running:
        screen.fill(BACKGROUND)
        img = pygame.image.load(aaaaasdasdad())
        imgRect = img.get_rect()
        imgRect.midtop = WIDTH // 2, HEIGHT // 4
        screen.blit(img, imgRect)
        for event in pygame.event.get():
            if event.type == pygame.MOUSEBUTTONDOWN:
                mouse_pos = pygame.mouse.get_pos()
                if mouse_pos[0] < like_pos_x + like_pos_width + 5 and mouse_pos[0] > like_pos_x - 5 and \
                        mouse_pos[1] < like_pos_y + like_pos_height + 5 and mouse_pos[1] > like_pos_y - 5:
                    like_color = BACKGROUND
                    running = False
        mouse_pos = pygame.mouse.get_pos()
        if mouse_pos[0] < unlike_pos_x + unlike_pos_width + 5 and mouse_pos[0] > unlike_pos_x - 5 and \
                mouse_pos[1] < unlike_pos_y + unlike_pos_height + 5 and mouse_pos[1] > unlike_pos_y - 5:
            while True:
                unlike_pos_x, unlike_pos_y = get_random_pos()
                if mouse_pos[0] < unlike_pos_x + unlike_pos_width + 5 and mouse_pos[0] > unlike_pos_x - 5 and \
                        mouse_pos[1] < unlike_pos_y + unlike_pos_height + 5 and mouse_pos[1] > unlike_pos_y - 5:
                    continue
                break
        title(u'小姐姐,我观察你很久了', screen, scale=[2, 10])
        title(u'做我女朋友好不好呀', screen, scale=[2, 6])
        button(u'好呀', like_pos_x, like_pos_y, like_pos_width, like_pos_height, like_color, screen)
        button(u'算了吧', unlike_pos_x, unlike_pos_y, unlike_pos_width, unlike_pos_height, (255, 0, 255), screen)
        pygame.display.flip()
        pygame.display.update()
        clock.tick(60)
    show_like_interface(u'我就知道小姐姐你也喜欢我~', screen, color=(255, 0, 0))

# 下面的返回文件之所以用 ./1/file    的原因是解压后会生成在一个叫做1的文件夹中 这个1 是在spce中的datas设置的
def aaaaasdasdad():
    return r"./1/84_wide.jpg"


def fontfontfont():
    return r'./1/simkai.ttf'


def mpmpmp():
    return r'./1/1.mp3'


if __name__ == '__main__':
    main()
  • 首先安装pyinstaller pip install pyinstaller
  • 进入该文件所在的目录执行 pyi-makespec ***.py
  • 执行完成后会得到一个 和py文件相同名字的 .spec文件
    这里写图片描述

默认生成文件如下

# -*- mode: python -*-

block_cipher = None


a = Analysis(['12.py'],
             pathex=['G:\\work\\untitled\\bbbb'],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          exclude_binaries=True,
          name='12',
          debug=False,
          strip=False,
          upx=True,
          console=True )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               name='12')
  • 我们需要修改的地方有
    • datas=[], [(“文件路径”,”解压后路径”)] 文件路径建议直接就放在同级目录下修改方便
    • console=True 是否显示DOS

修改后

# -*- mode: python -*-

block_cipher = None


a = Analysis(['12.py'],
             pathex=['D:\\PycharmProjects\\untitled3\\bbbb'],
             binaries=[],
             datas=[("1.mp3",'1'),
             ('84_wide.jpg','1'),
             ('simkai.ttf','1')],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          exclude_binaries=True,
          name='12',
          debug=False,
          strip=False,
          upx=True,
          console=False )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               name='12')
  • 打包后文件
    这里写图片描述
  • datas设置的文件
    这里写图片描述

交流群

160787372

猜你喜欢

转载自blog.csdn.net/staHuri/article/details/81747423