我用powerups制作了一个pong游戏,它可以在windows中运行,但在linux中,它给出了错误“无法打开paddle.png”。
同样,它适用于Windows,但不适用于Linux。
代码示例: - 代表代码的一部分,而不是整个代码
import pygame, sys, time
from random import *
pygame.init()
disw = 640
dish = 480
black = ( 0, 0, 0)
white = (255,255,255)
green = ( 0,255, 0)
gameDisplay = pygame.display.set_mode((disw, dish))
pygame.display.set_caption("Super-Pong", "S-P")
Clock = pygame.time.Clock()
playerOne = pygame.image.load("paddle.png")
playerOneX = 50
playerOneY = 180
playerTwo = pygame.image.load("paddle.png")
playerTwoX = 590
playerTwoY = 180
问题:无法在Linux中为python程序打开.png文件。
尝试:在Windows中运行,在Windows中工作。
他们也在同一个目录中。
我也尝试过制作paddle.jpg和其他几种格式,没有骰子。
我的错误:
[hunter@localhost ~]$ su -
Password:
Last login: Sun Nov 30 16:56:52 EST 2014 on pts/0
[root@localhost ~]# python /home/hunter/Documents/realprojects/superpong/Super-Pong.py
Traceback (most recent call last):
File "/home/hunter/Documents/realprojects/superpong/Super-Pong.py", line 16, in <module>
playerOne = pygame.image.load("paddle.png")
pygame.error: Couldn't open paddle.png
[root@localhost ~]#
答案 0 :(得分:3)
当您告诉Python库中的函数加载具有相对路径的文件(例如"paddle.png"
)时,它将查看当前工作目录(CWD)。如果您在CWD是用户root
的主目录时启动Python程序,Pygame将在用户root
的主目录中查找图像文件,除非另有说明。
要改变Pygame查找图像的位置,您需要执行以下三项操作之一:
cd
之前,将当前工作目录(paddle.png
)更改为包含Super-Pong.py
的目录。当您双击Python程序时,Python for Windows会自动执行此操作,这就是它在Windows中运行的原因。paddle.png
的目录,该目录可能与包含程序(Super-Pong.py
)的目录相同。程序的路径以sys.argv[0]
传递,因此请尝试以下操作:os.chdir(os.path.dirname(__file__))
paddle.png
位于同一文件夹中,请尝试以下操作:playerOne = pygame.image.load(os.path.join(os.path.dirname(__file__), "paddle.png"))
(为什么su -
呢?游戏不需要以超级用户身份运行。)
答案 1 :(得分:0)
我知道我有点迟了,但对于今天仍然遇到此问题的人,请尝试在图片名称中添加一个数字(例如paddle1.png)。我知道它看起来很奇怪,但它实际上是因为某种原因而修复了它,它可能不会为你修复它...