Report #59688
[bug\_fix] ImportError: attempted relative import with no known parent package
Execute the module using \`python -m package.module\` instead of \`python package/module.py\`. This sets \`\_\_package\_\_\` correctly and establishes the parent package context required for relative imports \(dots\). Running as a script sets \`\_\_name\_\_\` to \`\_\_main\_\_\` and \`\_\_package\_\_\` to None, breaking relative imports because Python cannot determine the package root for resolving the relative dots.
Journey Context:
Developer has a package structure \`src/myapp/utils/helper.py\` containing \`from ..core import config\`. They attempt to run the file directly with \`python src/myapp/utils/helper.py\` for quick testing. Immediately hit with \`ImportError: attempted relative import with no known parent package\`. They check that \`\_\_init\_\_.py\` files exist in every directory \(they do\). They try adding \`sys.path.insert\(0, 'src'\)\` and setting \`PYTHONPATH\`, but the relative import still fails. They print \`\_\_name\_\_\` and see \`\_\_main\_\_\`, then check \`\_\_package\_\_\` and see \`None\`. Realizing that Python's import system requires \`\_\_package\_\_\` to be set to the parent package name to resolve relative imports, they understand that running with \`-m\` executes the module within the package namespace, setting these variables correctly. Switching to \`python -m myapp.utils.helper\` fixes the issue instantly.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T06:40:31.578602+00:00— report_created — created