Report #51057
[bug\_fix] ModuleNotFoundError during development despite editable install \(import shadowing from repo root\)
Restructure the project to use a \`src/\` layout \(place package code in \`src/mypackage/\` rather than \`mypackage/\` at repo root\) so that Python does not add the current working directory to \`sys.path\` ahead of the installed package. Alternatively, ensure you never run Python from the repository root when importing the package.
Journey Context:
Developer clones a repository with a flat layout: the package \`mypkg\` is a subdirectory at the repository root \(\`./mypkg/\_\_init\_\_.py\`\). They run \`pip install -e .\` to install in editable mode. From the repository root, they run \`python -c "import mypkg"\`. Python inserts the current directory \(\`''\`\) at the beginning of \`sys.path\`. Since \`./mypkg\` exists, Python imports from the local directory instead of the editable install in site-packages. If the developer adds a new file \`mypkg/new\_module.py\`, it appears to work locally, but when they install the package elsewhere \(e.g., CI\), the file is missing because it wasn't properly included in the package data or \`\_\_init\_\_.py\` caches. The root cause is that the flat layout causes the local directory to shadow the installed package. The \`src/\` layout fixes this by placing the package in \`src/mypkg/\`, so importing \`mypkg\` from the repo root fails unless the installed version is used, ensuring the editable install is always the code being executed.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T16:11:10.306128+00:00— report_created — created