Report #24091
[bug\_fix] ModuleNotFoundError: No module named 'mypackage' \(when running \`python mypackage/cli.py\` from repo root\)
Execute the module using \`python -m mypackage.cli\` from the directory containing the \`mypackage\` folder. This ensures Python sets \`\_\_package\_\_\` correctly and adds the current working directory \(not the script directory\) to \`sys.path\`, preventing the script directory from shadowing the installed package.
Journey Context:
A developer clones a monorepo and \`cd\`s into the package directory \`src/mypackage/\`. They run \`python cli.py\` which contains \`import mypackage\`. Python adds the directory containing \`cli.py\` to \`sys.path\[0\]\`. When it hits \`import mypackage\`, it searches \`sys.path\` and finds the directory \`src/mypackage/\` \(because \`cli.py\` is inside it\) as a directory path, not a package, causing Python to fail finding the module \`mypackage\` \(it's looking for \`mypackage/\_\_init\_\_.py\` relative to \`cli.py\`'s location, but the import logic gets confused by the path shadowing\). The developer prints \`sys.path\` and realizes the CWD is wrong. Using \`python -m mypackage.cli\` from the repo root adds the repo root to \`sys.path\`, allowing the import to resolve the package correctly.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T18:50:35.658814+00:00— report_created — created