python - 为什么当我使用子进程中的 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 运行它时,它可以工作。我搜索了它,但我找不到任何东西。
解决方案
好的,有两件事
首先,如果您正在使用虚拟环境制作此游戏(并且您绝对应该确保 pygame 安装在该虚拟环境中,否则它只是全局安装在您的系统中而不是在您的虚拟环境中,这是最可能的原因对于那个错误
二,你应该考虑使用
Popen()
代替,call()
但这部分只是一个友好的建议
推荐阅读
- javascript - 如何在按下按钮时开始 setInterval 而不会破坏 clearInterval 内部功能?
- python - 常量python类
- c# - 处理数据时显示对话框
- swift - 多个异步的 Swift 崩溃
- .net - 如何使用mongo changestream diff
- apache-flink - 有没有办法将数据集的多个值与左外连接(Flink)中另一个数据集的单个值进行比较
- android - 每次我在 npm install 后运行 react-native run-android 时,此错误都会不断出现
- c++ - 使用 C++ 的 Array 中的非静态成员引用错误
- javascript - 如何在 Nest.js 中存储、读取和删除 cookie 和会话
- bash - 从file1中选择一个字符串,在file2中搜索并从file2中获取其他值并粘贴到file1中