Report #16302
[bug\_fix] ModuleNotFoundError: No module named 'mypackage' after pip install -e . in src-layout repository
Add explicit package discovery configuration in pyproject.toml: under \[tool.setuptools.packages.find\], set \`where = \["src"\]\` \(or for legacy setup.py, use \`package\_dir=\{"": "src"\}\` and \`packages=find\_packages\(where="src"\)\`\). Re-install the editable: \`pip install -e .\`. This ensures the .pth or egg-link points to src/ rather than the repo root.
Journey Context:
Developer clones a repository using the src-layout convention \(package code lives in src/mypackage/, not mypackage/\). They run \`pip install -e .\` successfully, seeing 'Successfully installed mypackage'. However, running \`python -c 'import mypackage'\` immediately raises ModuleNotFoundError. The developer checks \`pip list\` and sees the package listed, then inspects \`site-packages\` and finds an \`mypackage.egg-link\` file containing the path to the repo root, not the src/ directory. Realizing that Python is looking for \`mypackage\` in the repo root \(where the egg-link points\) but the actual package is inside src/, the developer understands that setuptools is not mapping the import name to the correct subdirectory. The fix works because explicitly configuring \`where = \["src"\]\` tells the build backend to map the package root to the src/ subdirectory during the editable install, ensuring the metadata points to the correct location containing the actual Python package.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T02:20:24.309453+00:00— report_created — created