将PYTHON打包成EXE后执行显示缺少PYGAME模块
本帖最后由 Aiden_H 于 2023-4-2 16:17 编辑已解决:新建了个项目,库重新安装后打包成功解决了,谢谢
未打包前能在PyCharm下能正常运行,打包后显示缺少PYGAME模块,解释器里是正确安装PYGAME模块的,打包成EXE文件大小是6.62MB。以下是源代码,请指导下,谢谢
import pygame
import sys
import random
# 初始化\
pygame.init()
fclock = pygame.time.Clock()
fps = 1
# 创建分数
score = 3
# 屏幕对象
screen = pygame.display.set_mode((800, 600))# 尺寸
# 贪吃蛇列表
snake_list = [, , ]
# 初始方向
direction = 'right'
# 食物
food =
# 游戏状态
status = '游戏中'
def play_game():
global score
global food
global status
# 画出背景竖线
for i in range(40):
pygame.draw.line(screen, (147, 147, 145),
(20 + i * 20, 0), (20 + i * 20, 600), 1)
# 画出背景横线
for i in range(30):
pygame.draw.line(screen, (147, 147, 145),
(0, i * 20), (800, i * 20), 1)
# 贪吃蛇的移动
if direction == 'right':
head_x = snake_list + 20
head_y = snake_list
if in snake_list:
status = '结束'
snake_list.insert(0, )
elif direction == 'left':
head_x = snake_list - 20
head_y = snake_list
if in snake_list:
status = '结束'
snake_list.insert(0, )
elif direction == 'up':
head_x = snake_list
head_y = snake_list - 20
if in snake_list:
status = '结束'
snake_list.insert(0, )
elif direction == 'down':
head_x = snake_list
head_y = snake_list + 20
if in snake_list:
status = '结束'
snake_list.insert(0, )
snake_list.pop()
# 【画出贪吃蛇】
for pos in snake_list:
pygame.draw.rect(screen, (146, 172, 209), (pos, pos, 20, 20))
# 【吃食物】
if food == snake_list:
food =
snake_list.append(snake_list[-1])
score += 1
# 【画出食物】
pygame.draw.rect(screen, (224, 205, 207), (food, food, 20, 20))
# 窗口主循环
while True:
# 遍历事件队列
for event in pygame.event.get():
if event.type == pygame.QUIT:# 点击右上角的'X',终止主循环
pygame.quit()
sys.exit()
# 【控制方向模块】
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT and direction != 'right':
direction = 'left'
elif event.key == pygame.K_RIGHT and direction != 'left':
direction = 'right'
elif event.key == pygame.K_UP and direction != 'down':
direction = 'up'
elif event.key == pygame.K_DOWN and direction != 'up':
direction = 'down'
# 填充背景颜色
screen.fill((105, 100, 123))
# 游戏模块
if status == '游戏中':
play_game()
# 游戏结束的判断机制
if snake_list > 800 or snake_list < 0:
status = '结束'
elif snake_list > 600 or snake_list < 0:
status = '结束'
else:
pass
fps = len(snake_list) + 1
fclock.tick(fps)
# 重绘界面
pygame.display.update() 这种情况很可能是因为 PyInstaller 在打包的过程中没有正确识别到 Pygame 模块,导致打包后的程序无法正常导入这个模块。
解决这个问题的方法:
手动指定 Pygame 模块
在 PyInstaller 命令行中手动指定 Pygame 模块的位置。例如:
pyinstaller --hidden-import=pygame 你的代码.py
这个命令中的 --hidden-import 参数用于手动指定需要导入的模块,这里将 Pygame 模块添加进去。
如果问题已经解决,请及时设置最佳答案! 你在pycharm里配置了pip也要install 应该是你打包的python环境中没有安装 pyinstaller
页:
[1]