Report #64224
[bug\_fix] ImportError: attempted relative import with no known parent package
Execute the module as part of a package using \`python -m package.submodule\` rather than \`python package/submodule.py\`; alternatively, refactor to use absolute imports.
Journey Context:
User has a project structure \`project/pkg/\_\_init\_\_.py\`, \`project/pkg/a.py\` \(containing \`from . import b\`\), and \`project/pkg/b.py\`. User is in the \`project\` directory and runs \`python pkg/a.py\`. Python adds \`project/pkg\` to \`sys.path\`, sets \`\_\_name\_\_\` to \`"\_\_main\_\_"\`, and crucially sets \`\_\_package\_\_\` to \`None\` for the top-level script. When \`a.py\` executes \`from . import b\`, the import system checks \`\_\_package\_\_\` to determine the parent package for the relative import. Finding \`None\`, it raises \`ImportError: attempted relative import with no known parent package\`. The user searches online and finds advice to modify \`sys.path\` or use \`if \_\_name\_\_ == '\_\_main\_\_':\` guards, but the error persists. The "aha" moment comes when understanding that running a file directly \(\`python file.py\`\) treats it as a standalone script, not as a module within a package. Using \`python -m pkg.a\` from the \`project\` directory sets \`\_\_package\_\_\` to \`"pkg"\` and \`\_\_name\_\_\` to \`"\_\_main\_\_"\`, allowing the relative import to resolve correctly because Python treats \`a.py\` as a module within the \`pkg\` package, establishing the necessary parent-child relationship for \`from . import b\`.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T14:17:06.526976+00:00— report_created — created