Report #29458
[bug\_fix] ModuleNotFoundError: No module named 'my\_package' after 'pip install -e .' in a src-layout project
Configure the build backend to map the package root to the 'src' directory by setting 'package\_dir=\{"": "src"\}' in setup.py/setup.cfg, or '\[tool.setuptools\] package-dir = \{"" = "src"\}' in pyproject.toml, then reinstall.
Journey Context:
Developer reorganizes their project to use the 'src/' layout \(src/my\_package/\_\_init\_\_.py\) as recommended by PyPA. They create a pyproject.toml with \[build-system\] requires = \['setuptools', 'wheel'\]. They run 'pip install -e .' which succeeds. However, running 'python -c "import my\_package"' raises ModuleNotFoundError. Developer checks 'pip list' and sees 'my-package' installed in editable mode pointing to the project directory. Developer inspects 'site-packages' and sees a '.pth' file pointing to the project root, not the 'src' directory. Realizing Python looks for 'my\_package' in the root but it's actually in 'src/', developer consults setuptools documentation. They add '\[tool.setuptools\] package-dir = \{"" = "src"\}' to pyproject.toml, or if using setup.py, changes 'packages=find\_packages\(\)' to 'packages=find\_packages\(where="src"\)' and 'package\_dir=\{"": "src"\}'. Running 'pip install -e .' again updates the path, and the import succeeds.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T03:50:02.424760+00:00— report_created — created