{"record":{"id":"b4d641bbcf6d1127","repo":"reflex-dev/reflex","slug":"cannot-find-package-associated-with-import-instru","errorCode":null,"errorMessage":"Cannot find package associated with import {instruction.argval} in {self.func!r}.","messagePattern":"Cannot find package associated with import (.+?) in (.+?)\\.","errorType":"exception","errorClass":"VarValueError","httpStatus":null,"severity":"error","filePath":"packages/reflex-base/src/reflex_base/vars/dep_tracking.py","lineNumber":469,"sourceCode":"                    type(self)(\n                        func=instruction.argval,\n                        state_cls=self.state_cls,\n                        tracked_locals=self.tracked_locals,\n                    )\n                )\n            elif instruction.opname == \"IMPORT_NAME\":\n                if instruction.argval is None:\n                    continue\n                self.scan_status = ScanStatus.GETTING_IMPORT\n                self._last_import_name = instruction.argval\n                importlib.import_module(instruction.argval)\n                top_module_name = instruction.argval.split(\".\")[0]\n                self.tracked_locals[instruction.argval] = sys.modules[top_module_name]\n                self.top_of_stack = instruction.argval\n            elif instruction.opname == \"IMPORT_FROM\":\n                if not self._last_import_name:\n                    msg = f\"Cannot find package associated with import {instruction.argval} in {self.func!r}.\"\n                    raise VarValueError(msg)\n                if instruction.argval in self._last_import_name.split(\".\"):\n                    # `import ... as ...` case:\n                    # import from interim package, update tracked_locals for the last imported name.\n                    self.tracked_locals[self._last_import_name] = getattr(\n                        self.tracked_locals[self._last_import_name], instruction.argval\n                    )\n                    continue\n                # Importing a name from a package/module.\n                if self._last_import_name is not None and self.top_of_stack:\n                    # The full import name does NOT end up in scope for a `from ... import`.\n                    self.tracked_locals.pop(self._last_import_name)\n                self.tracked_locals[instruction.argval] = getattr(\n                    importlib.import_module(self._last_import_name),\n                    instruction.argval,\n                )\n                # If we see a STORE_FAST, we can assign the top of stack to an aliased name.\n                self.top_of_stack = instruction.argval\n            elif (","sourceCodeStart":451,"sourceCodeEnd":487,"githubUrl":"https://github.com/reflex-dev/reflex/blob/45b8ed5ab735f8a56bbb09a42384f030eb0208e7/packages/reflex-base/src/reflex_base/vars/dep_tracking.py#L451-L487","documentation":"While scanning a cached var's bytecode for imports, Reflex handles `IMPORT_NAME` (recording the top module) then `IMPORT_FROM`. If an IMPORT_FROM appears without a preceding IMPORT_NAME (self._last_import_name is empty), Reflex cannot associate the imported name with a package and raises VarValueError.","triggerScenarios":"Bytecode where IMPORT_FROM is not preceded by IMPORT_NAME for the same statement — most commonly relative imports (`from .module import x`) or unusual import forms inside a cached var function whose tracking state was reset.","commonSituations":"Using relative imports inside a cached var body in a package (`from .helpers import helper`); module-level import machinery differences across Python versions; code that mutates sys.modules or uses importlib tricks inside the var function.","solutions":["Replace relative imports inside the cached var with absolute imports (`from mypkg.helpers import helper`).","Move the import to module top level instead of inside the cached var function.","If you must import inside the function, import the module first (`import mypkg.helpers as h`) then use `h.helper`."],"exampleFix":"# before\n@rx.var(cached=True)\ndef data(self) -> list:\n    from .utils import transform\n    return transform(self.rows)\n\n# after\nfrom myapp.utils import transform\n\n@rx.var(cached=True)\ndef data(self) -> list:\n    return transform(self.rows)","handlingStrategy":"validation","validationCode":"import dis\n\ndef imports_are_absolute(func) -> bool:\n    return all(i.opname != \"IMPORT_FROM\" or True for i in dis.get_instructions(func)) and \".\" not in (func.__code__.co_names or ())","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use absolute imports inside cached var functions.","Move imports to module top level.","Avoid importlib manipulation inside var functions."],"tags":["reflex","cached-var","relative-import","dependency-tracking"],"backgroundTag":"cached-var-unresolved-global","analyzedSha":"45b8ed5ab735f8a56bbb09a42384f030eb0208e7","analyzedAt":"2026-08-28T19:25:27.644Z","schemaVersion":2},"datasetVersion":"2026-08-28T21:17:43.275Z"}