Summary
The Quick start (website/versioned_docs/version-1.10/quick-start/index.mdx) tells users to run python -m pip install 'crawlee[all]'. With crawlee 1.10.3 this fails to resolve because the otel extra (pulled in by all) requires packages that only exist as pre-releases on PyPI, using specifiers that exclude pre-releases.
Repro
docker run --rm python:3.12-slim pip install 'crawlee[all]>=1.10,<2'
Result:
ERROR: Could not find a version that satisfies the requirement opentelemetry-distro>=0.54; extra == "otel"
ERROR: No matching distribution found for opentelemetry-distro>=0.54; extra == "otel"
Cause
crawlee 1.10.3 requires_dist (https://pypi.org/pypi/crawlee/json):
opentelemetry-distro[otlp]>=0.54; extra == "otel"
opentelemetry-instrumentation>=0.54; extra == "otel"
opentelemetry-semantic-conventions>=0.54; extra == "otel"
Every published opentelemetry-distro release is a beta (0.54b0 ... 0.66b0, https://pypi.org/pypi/opentelemetry-distro/json). Per PEP 440, 0.54b0 < 0.54, and pip/uv only consider pre-releases when the specifier names one (or --pre is passed). So >=0.54 matches nothing.
Proposed fix
Use pre-release-aware lower bounds in pyproject.toml, matching upstream OpenTelemetry versioning:
opentelemetry-distro[otlp]>=0.54b0
opentelemetry-instrumentation>=0.54b0
opentelemetry-semantic-conventions>=0.54b0
and add a CI job that installs crawlee[all] with plain pip (no --pre) so this can't regress.
Workaround
Install explicit extras, e.g. pip install 'crawlee[beautifulsoup,parsel,playwright,httpx,curl-impersonate]', or pass --pre.
Summary
The Quick start (
website/versioned_docs/version-1.10/quick-start/index.mdx) tells users to runpython -m pip install 'crawlee[all]'. With crawlee 1.10.3 this fails to resolve because theotelextra (pulled in byall) requires packages that only exist as pre-releases on PyPI, using specifiers that exclude pre-releases.Repro
Result:
Cause
crawlee 1.10.3
requires_dist(https://pypi.org/pypi/crawlee/json):opentelemetry-distro[otlp]>=0.54; extra == "otel"opentelemetry-instrumentation>=0.54; extra == "otel"opentelemetry-semantic-conventions>=0.54; extra == "otel"Every published
opentelemetry-distrorelease is a beta (0.54b0...0.66b0, https://pypi.org/pypi/opentelemetry-distro/json). Per PEP 440,0.54b0 < 0.54, and pip/uv only consider pre-releases when the specifier names one (or--preis passed). So>=0.54matches nothing.Proposed fix
Use pre-release-aware lower bounds in
pyproject.toml, matching upstream OpenTelemetry versioning:and add a CI job that installs
crawlee[all]with plain pip (no--pre) so this can't regress.Workaround
Install explicit extras, e.g.
pip install 'crawlee[beautifulsoup,parsel,playwright,httpx,curl-impersonate]', or pass--pre.