Report #47600
[bug\_fix] ImportError: attempted relative import with no known parent package
Execute the module as a package using \`python -m package.module\` from the project root, ensuring the current directory is in Python path and the module is loaded within the package context.
Journey Context:
Developer clones a repository and navigates to the project root. They attempt to run a submodule directly for quick testing: \`python src/mypackage/cli.py\`. Immediately, a traceback appears citing the relative import error on a line like \`from . import utils\`. The developer checks \`sys.path\` and sees the script's directory is there, so they try converting the import to absolute: \`import mypackage.utils\`, which then raises \`ModuleNotFoundError: No module named 'mypackage'\`. They try setting \`PYTHONPATH=src\`, which fixes the import but breaks when deployed because production doesn't use PYTHONPATH. They realize that when Python runs a file directly \(\`\_\_name\_\_ == "\_\_main\_\_"\`\), it doesn't treat the file as part of a package, so relative imports have no parent package context. Using \`python -m src.mypackage.cli\` \(or \`python -m mypackage.cli\` if src is the cwd\) forces Python to import it as a module within the package hierarchy, populating \`sys.modules\` correctly and allowing relative imports to resolve.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T10:22:45.504976+00:00— report_created — created