crewAIInc/crewAI · error · ImportError

openai is required for OpenAI file uploads. Install with: pi

Error message

openai is required for OpenAI file uploads. Install with: pip install openai

What it means

ImportError raised lazily by OpenAIFileUploader._get_client when 'from openai import OpenAI' fails: the openai SDK is not installed in the current interpreter. The client is created only on first use, so construction of the uploader never reveals the problem.

Source

Thrown at lib/crewai-files/src/crewai_files/uploaders/openai.py:172

            UploadResult with the file metadata.
        """
        return UploadResult(
            file_id=file_id,
            file_uri=None,
            content_type=content_type,
            expires_at=None,
            provider=self.provider_name,
        )

    def _get_client(self) -> Any:
        """Get or create the OpenAI client."""
        if self._client is None:
            try:
                from openai import OpenAI

                self._client = OpenAI(api_key=self._api_key)
            except ImportError as e:
                raise ImportError(
                    "openai is required for OpenAI file uploads. "
                    "Install with: pip install openai"
                ) from e
        return self._client

    def _get_async_client(self) -> Any:
        """Get or create the async OpenAI client."""
        if self._async_client is None:
            try:
                from openai import AsyncOpenAI

                self._async_client = AsyncOpenAI(api_key=self._api_key)
            except ImportError as e:
                raise ImportError(
                    "openai is required for OpenAI file uploads. "
                    "Install with: pip install openai"
                ) from e
        return self._async_client

View on GitHub (pinned to 754d7323be)

Solutions

  1. pip install openai in the environment that runs the code.
  2. Sanity-check the interpreter: python -c "from openai import OpenAI".
  3. Warm uploader._get_client() at startup so a missing SDK crashes during wiring, not mid-request.

Example fix

# before
uploader = OpenAIFileUploader(api_key=...)
uploader.upload(file)  # ImportError at request time

# after
# pip install openai
uploader = OpenAIFileUploader(api_key=...)
uploader._get_client()  # fail fast at startup
uploader.upload(file)
Defensive patterns

Strategy: validation

Validate before calling

from importlib.util import find_spec

if find_spec("openai") is None:
    raise RuntimeError("pip install openai required for OpenAI uploads")

Try / catch

try:
    uploader.upload(file)
except ImportError as e:
    if "openai" in str(e):
        raise RuntimeError("missing SDK: pip install openai") from e
    raise

Prevention

When it happens

Trigger: Constructing OpenAIFileUploader and calling upload(file) without the openai package installed, or with an environment mismatch (wrong venv/container interpreter).

Common situations: File-upload feature enabled without the openai extra; prod image slimmed past what the code needs; multiple virtualenvs where openai was installed only in dev.

Related errors


AI-assisted analysis of crewAIInc/crewAI@754d7323be (2026-08-15). Data as JSON: /api/errors/776d2ab695d99f51. Report an issue: GitHub.