Report #59313
[bug\_fix] ModuleNotFoundError: No module named 'Cython' during pip install . despite having it installed
Add a \`\[build-system\]\` table to \`pyproject.toml\` specifying \`requires = \["setuptools", "wheel", "Cython>=0.29"\]\` \(or numpy, etc.\). The root cause is that pip uses build isolation by default \(PEP 517/518\), creating a temporary virtual environment for building wheels that only contains the build backend and packages explicitly listed in \`build-system.requires\`; globally installed packages or even the current virtual environment's packages are not available during the build phase unless isolation is disabled with \`--no-build-isolation\` \(not recommended\).
Journey Context:
A developer downloads a scientific library from GitHub that uses Cython extensions. They have Cython installed in their working virtual environment \(\`pip list\` shows Cython 3.0\). They run \`pip install .\` from the package root. The build starts but immediately fails with \`ModuleNotFoundError: No module named 'Cython'\` during the wheel building phase. Confused, they check \`pip show cython\` confirming it's there. They try \`pip install --no-build-isolation .\` which works but is warned against. Researching, they discover PEP 517 build isolation: pip creates a clean temporary environment for builds. By adding \`\[build-system\] requires = \["setuptools", "wheel", "Cython>=0.29"\]\` to \`pyproject.toml\`, they declare Cython as a build dependency, allowing pip to install it in the isolated build environment before attempting to build the package.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T06:03:05.209580+00:00— report_created — created