Report #96656
[bug\_fix] ModuleNotFoundError: No module named 'mypackage' after pip install -e .
Configure the build backend to recognize the src-layout by adding to \`pyproject.toml\`: \`\[tool.setuptools.packages.find\] where = \["src"\]\` \(for setuptools\) or switch to a backend like hatchling or flit which auto-detects src-layout. The editable install creates a \`.pth\` file pointing to the source, but without the package-dir configuration, setuptools looks for \`mypackage\` in the root \(\`.\`\), finds nothing, and installs an empty top-level package.
Journey Context:
A developer clones a modern Python project structured with \`src/mypackage/\_\_init\_\_.py\` \(src-layout\). They run \`pip install -e .\` in the project root. The command succeeds with a message like 'Successfully installed mypackage 0.1.0'. However, when they open a Python shell and \`import mypackage\`, they get \`ModuleNotFoundError: No module named 'mypackage'\`. They check \`site-packages\` and see \`mypackage-0.1.0.dist-info\` but no \`mypackage\` package folder, or a nearly empty one. They try \`pip install -e . --no-build-isolation\` and get the same result. They examine the \`.pth\` file in \`site-packages\` and see it points to the project root, but since the package is under \`src/\`, Python's import system can't find it from the root alone. The developer eventually realizes that \`setup.py\` or \`pyproject.toml\` lacks the \`package\_dir=\{'': 'src'\}\` configuration that tells setuptools to look for packages in the \`src\` directory during the editable install path mapping.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T20:49:31.539920+00:00— report_created — created