【python】pyinstaller 打包
阿新 • • 發佈:2018-11-11
起因
- 明日七夕好友表白在網上找到一個表白工具,地址如下 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