pyglet中找不到资源异常

时间:2011-06-30 21:49:20

标签: pyglet

我正在使用Python 2.6.6和pyglet 1.1.4。在我的“Erosion”文件夹中,我有“Erosion.py”和一个名为“Images”的文件夹。在图像内部,有.png图像。一张图片名为“Guard.png。”

在“Erosion.py”中有一段如此:

pyglet.resource.path = ['Images']
pyglet.resource.reindex()
self.image = pyglet.resource.image('%s%s' % (character, '.png'))

当我跑这个时,我得到了

File "C:\Python26\lib\site-packages\pyglet\resource.py", line 394, in file raise ResourceNotFoundException(name)
ResourceNotFoundException: Resource "Guard.png" was not found on the path.  Ensure that the filename has the correct captialisation.

我尝试将路径更改为['。/'''和['../Images']。我也尝试删除路径和reindex调用,并将Erosion.py和Guard.png放在同一个文件夹中。

6 个答案:

答案 0 :(得分:3)

这就是我能够加载资源的方法:

pyglet.resource.path = ['C:\\Users\\myname\\Downloads\\temp']
pyglet.resource.reindex()

pic = pyglet.resource.image('1.jpg')

texture = pic.get_texture()
gl.glTexParameteri(gl.GL_TEXTURE_2D, gl.GL_TEXTURE_MAG_FILTER, gl.GL_NEAREST)

texture.width = 960
texture.height = 720

texture.blit(0, 0, 0)

答案 1 :(得分:2)

如果相对路径不起作用,您可以使用os模块尝试使用绝对路径。

import pyglet
import os

working_dir = os.path.dirname(os.path.realpath(__file__))
pyglet.resource.path = [os.path.join(working_dir,'Images')]
pyglet.resource.reindex()

image = pyglet.resource.image('character.png'))

最好使用os.path.join方法,而不是将其编写为字符串,以获得更好的跨平台支持。

答案 2 :(得分:0)

尝试this

pyglet.image.load('path/to/image.png')

答案 3 :(得分:0)

我使用pyglet和pyscripter得到了这样的问题。(文本编辑器)为了找到文件,我必须在运行程序之前重新启动编辑器。

然而,这可能是pyscripter的一个问题。

答案 4 :(得分:0)

值得研究:http://pyglet.readthedocs.io/en/pyglet-1.3-maintenance/programming_guide/resources.html

您应该将所有目录包含在:

 pyglet.resource.path = [...]

然后在您致电时传递文件名:

pyglet.resource.image("ball_color.jpeg")

尝试:

import os
import pyglet

working_dir = os.path.dirname(os.path.realpath(__file__))
image_dir = os.path.join(working_dir, 'images')
sound_dir = os.path.join(working_dir, 'sound')

print working_dir
print "Images are in: " + image_dir
print "Sounds are in: " + sound_dir

pyglet.resource.path = [working_dir, image_dir, sound_dir]
pyglet.resource.reindex()

try:
    window = pyglet.window.Window()
    image = pyglet.resource.image("ball_color.jpeg")

    @window.event
    def on_draw():
        window.clear()
        image.blit(0, 0)

    pyglet.app.run()

finally:
    window.close()

不需要使用tryfinally,但建议使用它们。如果在出现错误时不关闭窗口,最终可能会有很多打开的窗口和pyglet后台进程。

答案 5 :(得分:0)

pyglet 1.4.4格式:HUD_img = pyglet.resource.image('ui \ ui_gray_block_filled.png')

pyglet 1.4.8格式:HUD_img = pyglet.resource.image('ui / ui_ui_gray_block_filled.png')

我正在使用pyglet 1.4.4,并且能够在第一种格式中使用它。 升级到pyglet 1.4.8后,出现错误:pyglet.resource.ResourceNotFoundException:在路径上找不到资源“ your_resource_path”。

切换到带有正斜杠的第二种格式对我来说解决了这个问题。不知道为什么要进行此更改...我确定有充分的理由。