Report #39304
[bug\_fix] ImportError: attempted relative import with no known parent package
Execute the code as a module using \`python -m package.submodule\` from the parent directory of the package, rather than running the file directly as a script with \`python package/submodule.py\`. This sets \`\_\_package\_\_\` correctly to the parent package name, enabling the relative import resolution.
Journey Context:
A developer structures a project with \`myapp/utils/helper.py\` containing \`from ..core.config import settings\` \(a relative import to the parent package's core module\). They attempt to test a function quickly by running \`python myapp/utils/helper.py\` from the project root. Immediately, Python raises \`ImportError: attempted relative import with no known parent package\`. The developer verifies that \`\_\_init\_\_.py\` files exist in all directories. They try exporting \`PYTHONPATH=$PWD\` but the error persists. They add debug prints and see that \`\_\_name\_\_\` is \`\_\_main\_\_\` and \`\_\_package\_\_\` is \`None\`. Researching, they learn that when Python runs a file directly, it treats it as a script, not as part of a package, so relative imports \(which rely on package context\) cannot work. The developer navigates to the project root and runs \`python -m myapp.utils.helper\`. Now Python treats the execution as a module import, \`\_\_package\_\_\` is set to \`myapp.utils\`, the relative import \`..core\` correctly resolves to \`myapp.core\`, and the script executes successfully.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T20:26:38.389606+00:00— report_created — created