You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pytmx加载Tiled生成的TMX文件报错:无法找到tileset文件

Pygame中使用pytmx加载Tiled地图时找不到tileset文件

我在Tiled编辑器中制作了一张地图,计划在Pygame开发的游戏中使用。引入pytmx库辅助加载地图,但调用load_pygame()方法加载指定路径的TMX文件时抛出异常,报错显示找不到tileset文件。

报错信息

Traceback (most recent call last):
  File "D:\Coder man\code\GUI\game map\showing map.py", line 7, in <module>
    tmx_data = load_pygame("D:\Tile sheet\Dungeon Hub room.tmx")
  File "C:\Users\Name\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytmx\util_pygame.py", line 183, in load_pygame
    return pytmx.TiledMap(filename, *args, **kwargs)
  File "C:\Users\Name\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytmx\pytmx.py", line 501, in __init__
    self.parse_xml(ElementTree.parse(self.filename).getroot())
  File "C:\Users\Name\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytmx\pytmx.py", line 550, in parse_xml
    self.add_tileset(TiledTileset(self, subnode))
  File "C:\Users\Name\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytmx\pytmx.py", line 1101, in __init__
    self.parse_xml(node)
  File "C:\Users\Name\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytmx\pytmx.py", line 1129, in parse_xml
    source, self.parent.filename, path
Exception: Cannot find tileset file :/automap-tiles.tsx from D:\Tile sheet\Dungeon Hub room.tmx, should be at D:\Tile sheet\:\automap-tiles.tsx

当前代码

import pygame, sys
from pytmx.util_pygame import load_pygame


pygame.init()
screen = pygame.display.set_mode((1280, 720))
tmx_data = load_pygame("D:\Tile sheet\Dungeon Hub room.tmx")
print(tmx_data)


# game loop
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    screen.fill("black")
    pygame.display.update()

预期结果与已尝试操作

预期程序无报错,输出<Tiledmap: "Tile sheet\Dungeon Hub room.tmx">并弹出Pygame窗口。已核对文件路径、检查load_pygame调用方式,问题仍未解决。


解决方案

1. 修正TMX文件中的tileset路径格式

报错里的:/automap-tiles.tsx是错误的路径格式,这是Tiled保存地图时生成的异常路径。用文本编辑器打开你的Dungeon Hub room.tmx文件,找到引用tileset的XML节点:

<tileset firstgid="1" source=":/automap-tiles.tsx"/>

将source属性修改为正确的相对路径:

  • 如果automap-tiles.tsx和TMX文件在同一文件夹,改为source="automap-tiles.tsx"
  • 如果tileset在子文件夹(比如tilesets),改为source="tilesets/automap-tiles.tsx"(统一使用正斜杠/)

2. 修复Python路径字符串的转义问题

代码中的路径字符串"D:\Tile sheet\Dungeon Hub room.tmx"存在转义风险,\T、\D可能被Python解析为转义字符。可以用三种方式修改:

  • 使用原始字符串:r"D:\Tile sheet\Dungeon Hub room.tmx"
  • 双反斜杠转义:"D:\\Tile sheet\\Dungeon Hub room.tmx"
  • 正斜杠替代:"D:/Tile sheet/Dungeon Hub room.tmx"

修改后的代码路径部分示例:

tmx_data = load_pygame(r"D:\Tile sheet\Dungeon Hub room.tmx")

3. 验证tileset文件的存在性

确认automap-tiles.tsx文件确实存在于你指定的路径下,文件名和大小写完全匹配(建议保持与TMX中引用的一致)。


内容的提问来源于stack exchange,提问作者Ninja Boy James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 12:40:35