Report #12901
[bug\_fix] ImportError: attempted relative import with no known parent package
Execute the module using \`python -m package.module\` from the project root instead of \`python package/module.py\`. When a file is run as a script \(\`\_\_name\_\_ == '\_\_main\_\_'\`\), Python sets \`\_\_package\_\_\` to None, breaking relative imports. The \`-m\` flag forces the import system to treat the file as a module within the package hierarchy, correctly populating \`\_\_package\_\_\` and allowing relative imports to resolve.
Journey Context:
You have a project with \`src/mypkg/utils.py\` containing \`from . import config\`. You run \`python src/mypkg/utils.py\` and immediately hit ImportError. You spend an hour adding \`\_\_init\_\_.py\` files everywhere, tweaking PYTHONPATH, and even hacking \`sys.path.insert\(0, os.path.dirname\(\_\_file\_\_\)\)\`, but the error persists. You check \`print\(\_\_name\_\_, \_\_package\_\_\)\` and see \`\_\_main\_\_\` and \`None\`. You realize that Python treats the file as a standalone script, not as a module inside \`mypkg\`, so the relative import has no parent package context. You switch to running \`python -m mypkg.utils\` from the \`src\` directory, and the import succeeds because Python now recognizes the module's place in the package hierarchy.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T17:17:01.229691+00:00— report_created — created