Report #17299
[bug\_fix] ModuleNotFoundError after pip install -e . with src-layout project
Add explicit package discovery configuration in \`pyproject.toml\` under \`\[tool.setuptools.packages.find\]\` with \`where = \["src"\]\`, or in \`setup.py\` use \`package\_dir=\{"": "src"\}\`, ensuring setuptools knows to map the package name to the \`src/\` directory during the editable install.
Journey Context:
You've restructured your project to the 'src-layout' recommended by PyPA: your package code lives in \`src/mypackage/\_\_init\_\_.py\` instead of \`mypackage/\_\_init\_\_.py\`. You run \`pip install -e .\` to install in editable mode. The installation reports success. However, when you open a Python REPL and \`import mypackage\`, you get ModuleNotFoundError. You check \`site-packages\` and find \`mypackage.egg-link\` pointing to your project root, but Python is looking for \`mypackage\` in the root, not in \`src/\`. The root cause is that setuptools \(or the build backend\) defaults to looking for packages in the project root. Without explicit configuration, the editable install creates a link to the wrong location or fails to map the package name to the \`src\` directory. The fix explicitly tells setuptools to look for packages in the \`src\` directory using \`package\_dir\` or \`\[tool.setuptools.packages.find\]\`, allowing the editable install to correctly map imports to the source files.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T04:56:43.369612+00:00— report_created — created