首页 > 解决方案 > 为什么当我使用子进程中的 call() 运行 python 文件时,我得到 ModuleNotFoundError

问题描述

所以我制作了一个飞扬的小鸟游戏,每次玩家死亡时,我都会关闭程序并再次运行它:

call(["python", "app.py"])
quit(1)

每当call(["python", "app.py"])我运行时,ModuleNotFoundError: No module named 'pygame' 即使我安装了 pygame。

应用程序.py:

import pygame as py
from subprocess import call



# Initialize Pygame
py.init()
# Window
icon = py.image.load(('flappyicon.jpg'))
window = py.display.set_mode((800, 600))
window.fill((155, 152, 13))
py.display.set_caption('Flappy Bird')
py.display.set_icon(icon)

# Player
playerImg = py.image.load('flappy.png')
playerImg = py.transform.scale(playerImg, (45, 45))
playerY = 250
playerX = 30
# Player Physics
playerYDownVelocity = 0


def player(playerX, playerY):
    window.blit(playerImg, (playerX, playerY))


# Game Loop
lost = False
running = True
while running:
    window.fill((155, 152, 13))
    for event in py.event.get():
        if event.type == py.QUIT:
            running = False
        if event.type == py.KEYDOWN:
            if event.key == py.K_SPACE:
                playerYDownVelocity = -0.4

            if event.key == py.K_r:
                if lost == True:
                    print('elooor')
                    rerun = 'app.py'
                    call(["python", "app.py"])
                    quit(1)

    if playerY >= 550:
        # gameOver()
        lost = True
        playerY = 550
    elif playerY <= 0:
        playerY = 0

    # Physics
    playerYDownVelocity += 0.001
    playerY += playerYDownVelocity
    player(playerX, playerY)
    py.display.update()

当我从 pycharm 运行它时,它可以工作。我搜索了它,但我找不到任何东西。

标签: pythonpygamepython-3.8

解决方案


好的,有两件事

  1. 首先,如果您正在使用虚拟环境制作此游戏(并且您绝对应该确保 pygame 安装在该虚拟环境中,否则它只是全局安装在您的系统中而不是在您的虚拟环境中,这是最可能的原因对于那个错误

  2. 二,你应该考虑使用Popen()代替,call()但这部分只是一个友好的建议


推荐阅读