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

使用Pyxel的load()函数加载.pyxel资源文件时遇NameError求助

解决Pyxel加载资源时的NameError问题

嘿,我一眼就看到问题所在啦!咱们一步步来修复:

核心错误:文件名没加引号

你代码里的pyxel.load(sprites.pyxel)是导致NameError的直接原因——Python会把sprites.pyxel当成一个变量名来解析,但你根本没定义过叫sprites的变量,自然会报错。

Pyxel的load()函数需要传入的是字符串类型的文件路径,所以你得给文件名加上引号:

pyxel.load("sprites.pyxel")

优化建议:把资源加载移到初始化方法里

另外,你现在把load()放在draw()方法里会有问题——draw()会被Pyxel每帧调用一次,这意味着你每帧都在重复加载同一个资源文件,既浪费性能,还可能引发其他奇怪的问题。

正确的做法是把资源加载放在__init__方法里,只在程序启动时加载一次:

import pyxel

class test:
    def __init__(self):
        pyxel.init(16, 16)
        # 在这里加载资源,只执行一次
        pyxel.load("sprites.pyxel")
        pyxel.run(self.update, self.draw)
    
    def update(self):
        pass
    
    def draw(self):
        # 直接使用加载好的资源
        pyxel.blt(0, 0, 0, 0, 0, 16, 16, 14)

test()

额外注意事项

  • 关于你尝试去掉.pyxel后缀无效:那是因为你没解决“缺少引号”这个核心问题,加了引号之后,保留后缀才能正确找到资源文件。
  • 关于draw()里的self参数未使用:这个其实不影响程序运行,如果你看着别扭,可以改成def draw(self, *_):用下划线占位,或者就保留原样——Pyxel的回调方法签名要求类方法带self参数。
  • repl.it环境路径确认:确保sprites.pyxel和你的主代码文件在同一个目录下,你可以通过repl.it左侧的文件管理器检查文件位置,避免路径错误。

内容的提问来源于stack exchange,提问作者Vijay Shastri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:34:29