Report #40217
[bug\_fix] ImportError: attempted relative import with no known parent package
The root cause is that Python sets \`\_\_name\_\_\` to \`'\_\_main\_\_'\` and \`\_\_package\_\_\` to \`None\` when a script is run directly \(e.g., \`python mypackage/module.py\`\), breaking relative imports which rely on \`\_\_package\_\_\` to locate the parent. The fix is to run the module as part of a package using the \`-m\` flag from the project root: \`python -m mypackage.module\`, which correctly sets \`\_\_package\_\_\` to \`'mypackage'\` and allows relative imports to resolve.
Journey Context:
Developer has a project \`src/mypkg/utils.py\` trying to import \`from . import constants\`. They run \`python src/mypkg/utils.py\` and get \`ImportError: attempted relative import with no known parent package\`. They try adding the parent directory to \`sys.path\` which creates double-import bugs. They check \`print\(\_\_name\_\_, \_\_package\_\_\)\` and see \`\_\_main\_\_ None\`. They learn that relative imports require the module to be imported as part of a package. They change their command to \`python -m src.mypkg.utils\` \(after adding \`\_\_init\_\_.py\` files appropriately\) and the relative import succeeds because Python now knows the package context.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T21:58:41.018911+00:00— report_created — created