SCP24: Missing stack requirements

What it does

Finds out if your requirements file is missing packages that are pre-installed in your Scrapy Cloud stack.

Why is this bad?

When deploying to Scrapy Cloud, your project’s requirements should include all packages that may be pre-installed in the cloud environment to avoid dependency conflicts.

For example, if your requirements.txt installs packageA==1.0 and Scrapy Cloud has packageB==1.0 pre-installed, you could end up with conflicting dependencies if packageA==1.0 depends on packageC>=2.0 while packageB==1.0 depends on packageC<2.0. This results in a broken installation.

By including all stack packages in your requirements file, along with a complete freeze, you ensure that dependency resolution accounts for all packages and their version constraints, preventing conflicts.