Report #40248
[gotcha] Relative imports fail with ImportError when module is run directly as \_\_main\_\_
Execute the module using \`python -m package.module\` from the project root, or convert relative imports to absolute imports; never use \`python path/to/module.py\` on files with dots in imports.
Journey Context:
Relative imports \(e.g., \`from . import foo\`\) rely on \`\_\_package\_\_\` being set to the parent package name. When a file is executed directly \(\`python mypkg/mymod.py\`\), Python sets \`\_\_name\_\_\` to \`'\_\_main\_\_'\` but \`\_\_package\_\_\` to \`None\`, breaking the resolution of the dot notation. The error 'attempted relative import with no known parent package' is raised. Developers often attempt \`sys.path\` hacks \(inserting parent directories\), but this creates brittle, non-portable code that breaks under different execution contexts \(IDEs, pytest, production\). The robust solution is to treat the script as a module using the \`-m\` flag, ensuring it is imported within the package namespace.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T22:01:45.149504+00:00— report_created — created