<@ULVA73B9P> How to specify multiple EXTRA_PIP_PAC...
# ask-marvin
h
@Marvin How to specify multiple EXTRA_PIP_PACKAGES
m
thought for 296.3 seconds
Short answer: use a whitespace-separated list. The Prefect images/entrypoint expand
EXTRA_PIP_PACKAGES
straight into a
pip install ...
call, so packages are split on spaces (shell whitespace). Do not use commas. Examples - Docker (docker run)
Copy code
docker run --rm \
  -e PREFECT_API_URL="..." \
  -e PREFECT_API_KEY="..." \
  -e EXTRA_PIP_PACKAGES="pandas==2.2.2 requests>=2.31 'pyarrow<17' git+https://github.com/org/pkg@v1.2.3" \
  prefecthq/prefect:3-latest
- Prefect 3.x Docker or Kubernetes work pool (job_variables in prefect.yaml)
Copy code
deployments:
  - name: my-flow
    work_pool:
      name: my-k8s-or-docker-pool
      job_variables:
        image: prefecthq/prefect:3-latest
        env:
          EXTRA_PIP_PACKAGES: "pandas==2.2.2 requests>=2.31"
- Kubernetes manifest (worker Deployment)
Copy code
apiVersion: apps/v1
kind: Deployment
metadata:
  name: prefect-worker
spec:
  template:
    spec:
      containers:
        - name: worker
          image: prefecthq/prefect:3-latest
          env:
            - name: EXTRA_PIP_PACKAGES
              value: "pandas==2.2.2 requests>=2.31"
- Helm values (generic pattern)
Copy code
worker:
  env:
    - name: EXTRA_PIP_PACKAGES
      value: "pandas==2.2.2 requests>=2.31"
- Cloud Run (gcloud)
Copy code
gcloud run deploy prefect-worker \
  --image=prefecthq/prefect:3-latest \
  --region=us-central1 \
  --set-env-vars=EXTRA_PIP_PACKAGES="pandas==2.2.2 requests>=2.31"
Notes - Quote values that include special shell characters (e.g., <, >) to avoid shell parsing issues. - Newlines also count as whitespace, but a single space-delimited string is simplest. - Because this installs at container startup, prefer baking dependencies into your image or using a pull step/requirements file for reproducibility when possible. Related docs - Prefect 3.x: Docker deployments - Prefect 3.x: Kubernetes deployments