鱼C论坛

 找回密码
 立即注册
查看: 1293|回复: 3

[已解决]将PYTHON打包成EXE后执行显示缺少PYGAME模块

[复制链接]
发表于 2023-4-2 13:41:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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 = [[20, 20], [20, 40], [20, 60]]

# 初始方向
direction = 'right'

# 食物
food = [random.randint(1, 39) * 20, random.randint(1, 29) * 20]

# 游戏状态
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[0][0] + 20
        head_y = snake_list[0][1]
        if [head_x, head_y] in snake_list:
            status = '结束'
        snake_list.insert(0, [head_x, head_y])
    elif direction == 'left':
        head_x = snake_list[0][0] - 20
        head_y = snake_list[0][1]
        if [head_x, head_y] in snake_list:
            status = '结束'
        snake_list.insert(0, [head_x, head_y])
    elif direction == 'up':
        head_x = snake_list[0][0]
        head_y = snake_list[0][1] - 20
        if [head_x, head_y] in snake_list:
            status = '结束'
        snake_list.insert(0, [head_x, head_y])
    elif direction == 'down':
        head_x = snake_list[0][0]
        head_y = snake_list[0][1] + 20
        if [head_x, head_y] in snake_list:
            status = '结束'
        snake_list.insert(0, [head_x, head_y])

    snake_list.pop()

    # 【画出贪吃蛇】
    for pos in snake_list:
        pygame.draw.rect(screen, (146, 172, 209), (pos[0], pos[1], 20, 20))

    # 【吃食物】
    if food == snake_list[0]:
        food = [random.randint(1, 39) * 20, random.randint(1, 29) * 20]
        snake_list.append(snake_list[-1])
        score += 1

    # 【画出食物】
    pygame.draw.rect(screen, (224, 205, 207), (food[0], food[1], 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[0][0] > 800 or snake_list[0][0] < 0:
            status = '结束'
        elif snake_list[0][1] > 600 or snake_list[0][1] < 0:
            status = '结束'
    else:
        pass

    fps = len(snake_list) + 1
    fclock.tick(fps)

    # 重绘界面
    pygame.display.update()
最佳答案
2023-4-2 13:44:47
这种情况很可能是因为 PyInstaller 在打包的过程中没有正确识别到 Pygame 模块,导致打包后的程序无法正常导入这个模块。

解决这个问题的方法:

手动指定 Pygame 模块
在 PyInstaller 命令行中手动指定 Pygame 模块的位置。例如:
pyinstaller --hidden-import=pygame 你的代码.py

这个命令中的 --hidden-import 参数用于手动指定需要导入的模块,这里将 Pygame 模块添加进去。
如果问题已经解决,请及时设置最佳答案!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-2 13:44:47 | 显示全部楼层    本楼为最佳答案   
这种情况很可能是因为 PyInstaller 在打包的过程中没有正确识别到 Pygame 模块,导致打包后的程序无法正常导入这个模块。

解决这个问题的方法:

手动指定 Pygame 模块
在 PyInstaller 命令行中手动指定 Pygame 模块的位置。例如:
pyinstaller --hidden-import=pygame 你的代码.py

这个命令中的 --hidden-import 参数用于手动指定需要导入的模块,这里将 Pygame 模块添加进去。
如果问题已经解决,请及时设置最佳答案!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-2 13:51:37 | 显示全部楼层
你在pycharm里配置了pip也要install
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-2 14:02:39 | 显示全部楼层
应该是你打包的python环境中没有安装 pyinstaller
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 21:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表