crewAIInc/crewAI · error · ImportError
openai is required for OpenAI file uploads. Install with…
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.
Solutions
- pip install openai in the environment that runs the code.
- Sanity-check the interpreter: python -c "from openai import OpenAI".
- 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
- Add openai to requirements wherever the OpenAI uploader is enabled.
- Warm _get_client() at startup for fail-fast behavior.
- Run a dependency smoke test in CI matching production extras.
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
- aioboto3 is required for async Bedrock S3 file uploads…
- anthropic is required for Anthropic file uploads. Install…
- boto3 is required for Bedrock S3 file uploads. Install…
- google-genai is required for Gemini file uploads. Install…
- `boto3` package not found, please run `uv add boto3`
AI-assisted analysis of crewAIInc/crewAI@754d7323be (2026-08-15).
Data as JSON: /api/errors/776d2ab695d99f51.
Report an issue: GitHub.
Appendix: 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_clientView on GitHub (pinned to 754d7323be)