aosabook/500lines · error · NameError
name '%s' is not defined
Error message
name '%s' is not defined
What it means
Error "name '%s' is not defined" thrown in aosabook/500lines.
Source
Thrown at interpreter/code/byterun/pyvm2.py:306
self.frame.push(const)
def byte_POP_TOP(self):
self.frame.pop()
def byte_DUP_TOP(self):
self.frame.push(self.frame.top())
## Names
def byte_LOAD_NAME(self, name):
frame = self.frame
if name in frame.local_names:
val = frame.local_names[name]
elif name in frame.global_names:
val = frame.global_names[name]
elif name in frame.builtin_names:
val = frame.builtin_names[name]
else:
raise NameError("name '%s' is not defined" % name)
self.frame.push(val)
def byte_STORE_NAME(self, name):
self.frame.local_names[name] = self.frame.pop()
def byte_DELETE_NAME(self, name):
del self.frame.local_names[name]
def byte_LOAD_FAST(self, name):
if name in self.frame.local_names:
val = self.frame.local_names[name]
else:
raise UnboundLocalError(
"local variable '%s' referenced before assignment" % name
)
self.frame.push(val)
def byte_STORE_FAST(self, name):View on GitHub (pinned to fba689d101)
Solutions
- Define the name (assignment, def, class, or import) before loading it.
- Check for typos in the variable or function name being loaded.
- If the name is a builtin, make sure it exists in the running Python version; otherwise define it explicitly.
Example fix
x = 1 print(x) # define x before LOAD_NAME/LOAD_GLOBAL references it
When it happens
Trigger: Thrown at interpreter/code/byterun/pyvm2.py:306 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of aosabook/500lines@fba689d101 (2026-08-13).
Data as JSON: /api/errors/cd1b6e5e9650a8bf.
Report an issue: GitHub.