Report #29894
[bug\_fix] ModuleNotFoundError: No module named 'mypackage' immediately after \`pip install -e .\` appears to succeed, particularly in projects using a \`src\` layout or missing \`pyproject.toml\` build-system configuration.
Add a \`\[build-system\]\` section to \`pyproject.toml\` specifying \`requires = \["setuptools>=64", "wheel"\]\` and \`\[tool.setuptools.packages.find\]\` with \`where = \["src"\]\` \(if using src layout\), or explicitly set \`packages = \["mypackage"\]\` in \`\[tool.setuptools\]\`. Re-run \`pip install -e .\`. Root cause: PEP 660 editable installs require a build backend that supports it; without proper metadata, pip installs a \`.egg-link\` pointing to the wrong directory or fails to generate the \`.pth\` file needed for Python to locate the package.
Journey Context:
A developer clones a modern Python project using a \`src\` layout \(\`src/mypackage/\_\_init\_\_.py\`\). They navigate to the root and run \`pip install -e .\`. The command exits with 'Successfully installed mypackage' \(or appears to\). They open a Python REPL and \`import mypackage\`, receiving \`ModuleNotFoundError\`. They check \`pip list\`, see \`mypackage\` listed. They inspect \`site-packages\`, find a \`mypackage.egg-link\` file containing a path like \`./src/mypackage\`, which is relative and incorrect. They realize \`pyproject.toml\` lacks a \`\[build-system\]\` section, causing setuptools to fallback to legacy behavior that doesn't understand src layout in editable mode. They add the proper \`\[build-system\]\` and \`\[tool.setuptools.packages.find\]\` configuration, reinstall, and the \`.pth\` file is correctly generated in \`site-packages\`, pointing to the src directory, fixing the import.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T04:34:01.981741+00:00— report_created — created