Report #46522
[bug\_fix] ModuleNotFoundError: No module named 'mypackage' after pip install -e . in src-layout project
Add package\_dir=\{'': 'src'\} in setup.py or \[tool.setuptools.packages.find\] where=\['src'\] in pyproject.toml, then reinstall. Root cause: setuptools defaults to looking for packages in the repository root; without package\_dir mapping, editable installs point PYTHONPATH to root/ instead of src/, so Python cannot find the package despite pip listing it as installed.
Journey Context:
Developer clones a modern Python project using the src-layout \(source code in src/mypackage/\). They run python -m pip install -e . to install in editable mode. The command succeeds and pip list shows mypackage 0.1.0. However, when they open a Python REPL and import mypackage, they get ModuleNotFoundError. They check sys.path and see the project root is listed, but the package is actually in src/. They realize that setuptools is looking for the package in the root directory because they didn't specify package\_dir. They edit pyproject.toml to include \[tool.setuptools.packages.find\] where = \["src"\] or adds package\_dir=\{"": "src"\} in setup.py, reinstall, and the import succeeds because Python now finds the package in the src/ directory via the .pth file generated by the editable install.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T08:33:44.371195+00:00— report_created — created