无法在 Atom 中使用 PyGame 打开图像

Cannot Open Images With PyGame in Atom

我正在学习 python 使用 this website

我正在尝试像这样加载图像:

background_image = pygame.image.load("background.jpg").convert()

我发现其他几个帖子问同样的问题,所有的答案都告诉发帖者确保图像与 .py 文件位于同一文件夹中。好吧,是的。我仔细检查了。

我还尝试将其放入名为 'images' 的子文件夹中并使用它。

background_image = pygame.image.load(os.path.join("images","background.jpg")).convert()

在这两种情况下,我都会收到以下错误消息。

pygame.error: Couldn't open saturn_family1.jpg

pygame.error: Couldn't open images\saturn_family1.jpg

当使用绝对路径时,它有效。但是我不应该能够使用这样的相对路径吗?

此外,当使用 script 包在 Atom 中执行时,也会发生这种情况。但是当执行实际的 python 文件时,它起作用了。

我很沮丧,这似乎没有任何意义!怎么回事?

完整的错误信息是:

C:\Users\Manu\Dropbox\Python\ProgramArcadeGames
Traceback (most recent call last):
  File "C:\Users\Manu\Dropbox\Python\ProgramArcadeGames\Ch11_graphicsAndSound.py", line 26, in <module>
    background_image = pygame.image.load(os.path.join("images","saturn_family1.jpg")).convert()
pygame.error: Couldn't open images\saturn_family1.jpg
[Finished in 0.815s]

这是 .py 目录:

更新: 我 运行 在 sublime 中使用完全相同的代码并且运行良好。我假设这是 Atom 的问题,所以从现在开始我将只使用 Sublime。感谢所有试图提供帮助的人!

将文件放在与您的 python 程序相同的目录中,前提是这是当前工作目录。因为我们知道情况并非如此,所以要么您在脚本执行时以某种方式更改了工作目录,要么您从其他目录开始。您可以使用

在命令行上执行此操作
python ../myscript.py

但我不认为你正在这样做。你说一下运行 Atom下的脚本,或许可以解释一下。我没有这方面的经验,所以我不能随便说。请输入

print os.getcwd()

作为程序的第一行。然后您就会知道从哪里开始以及当前目录是否正在更改。如果它没有改变,请尝试 运行 Atom 下的脚本并从命令行查看是否会得到不同的结果。在我们确切知道发生了什么之前,我们将无法解决问题。

我用VS写代码的时候也出现了同样的错误。 我通过更改图像的路径(此处使用绝对路径)来解决这个问题。

pygame.image.load('/images/xxx')改为

pygame.image.load('/Users/xxx/..../images/xxxx')

我正在使用 mac,但在其他 OS 上应该是一样的。

图片使用绝对路径即可。 例如:

self.image = pygame.image.load('C:/Users/denis/Documents/python_practice/git_practice/Python_lessons/alien_invasion/images/ship.bmp')