Report #52876
[bug\_fix] ImportError: attempted relative import with no known parent package
Execute the module using the '-m' flag from the project root \(e.g., 'python -m package.module'\) instead of running the file directly \('python package/module.py'\). This correctly sets the \_\_package\_\_ and \_\_spec\_\_ attributes, allowing Python to resolve relative imports via the parent package's context.
Journey Context:
Developer clones a repository with a standard src-layout package. They navigate into the source directory and run 'python mypackage/submodule.py' directly to test a quick change. The file contains 'from . import utils'. It immediately crashes with 'attempted relative import with no known parent package'. They try changing it to 'from mypackage import utils', which then fails with ModuleNotFoundError because the parent directory isn't on sys.path. They attempt to hack sys.path in the script. They realize that when running a file directly, Python sets \_\_name\_\_ to '\_\_main\_\_' and \_\_package\_\_ to None, breaking the package context. Running it as 'python -m mypackage.submodule' from the repo root fixes it because Python treats it as a module within the package, not a standalone script.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T19:14:49.164010+00:00— report_created — created