Report #77849
[bug\_fix] ImportError: attempted relative import with no known parent package
Run the module using \`python -m package.module\` instead of \`python package/module.py\`, or convert relative imports to absolute imports. Root cause: When you run a file directly as \`python module.py\`, Python sets \`\_\_name\_\_\` to \`"\_\_main\_\_"\` and doesn't treat it as part of a package, breaking relative imports which rely on \`\_\_package\_\_\` being set correctly.
Journey Context:
You're refactoring a Flask project. You have \`app/routes/user.py\` that does \`from ..models import db\` to access the database. You try to test it quickly by running \`python app/routes/user.py\` and immediately hit \`ImportError: attempted relative import with no known parent package\`. You check \`sys.path\`—it looks fine. You try adding \`\_\_init\_\_.py\` files everywhere \(even though you're on Python 3.11\), but the error persists. You Google and find a StackOverflow thread explaining that running a file as a script breaks the package context. You realize that \`\_\_name\_\_\` becomes \`\_\_main\_\_\` and Python doesn't know what package this module belongs to. You try the fix: instead of \`python app/routes/user.py\`, you run \`python -m app.routes.user\` from the project root \(where \`app/\` is\). It works because Python now properly initializes the package hierarchy and \`..models\` resolves correctly to the parent package.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T13:15:48.661032+00:00— report_created — created