Python Error When Installing OpenAI - "subprocess-exited-with-error"

1st Feb 2023 Eric Stauffer

OpenAI

Updated: 2023-10-11

Setting Up OpenAI's API

If you are just getting started with OpenAI's ChatGPT, you have probably found yourself on the first page of the documentation section. At the time of this writing, the first order of business is to install the official Python bindings using:

pip install openai

If your results were like mine, you were met with something like this:

Collecting openai
  Using cached openai-0.26.4.tar.gz (55 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... error
  error: subprocess-exited-with-error

  × Getting requirements to build wheel did not run successfully.
  │ exit code: 1
  ╰─> [81 lines of output]
      Traceback (most recent call last):
        File "/usr/lib/python3/dist-packages/setuptools/config.py", line 419, in _parse_attr
          return getattr(StaticModule(module_name), attr_name)
        File "/usr/lib/python3/dist-packages/setuptools/config.py", line 26, in __init__
          spec = importlib.util.find_spec(name)
        File "/usr/lib/python3.10/importlib/util.py", line 94, in find_spec
          parent = __import__(parent_name, fromlist=['__path__'])
        File "/tmp/pip-install-b1lgx33q/openai_99369f7e20574ac190c9a64d4957fe9e/openai/__init__.py", line 9, in <module>
          from openai.api_resources import (
        File "/tmp/pip-install-b1lgx33q/openai_99369f7e20574ac190c9a64d4957fe9e/openai/api_resources/__init__.py", line 1, in <module>
          from openai.api_resources.completion import Completion  # noqa: F401
        File "/tmp/pip-install-b1lgx33q/openai_99369f7e20574ac190c9a64d4957fe9e/openai/api_resources/completion.py", line 4, in <module>
          from openai.api_resources.abstract import DeletableAPIResource, ListableAPIResource
        File "/tmp/pip-install-b1lgx33q/openai_99369f7e20574ac190c9a64d4957fe9e/openai/api_resources/abstract/__init__.py", line 3, in <module>
          from openai.api_resources.abstract.api_resource import APIResource
        File "/tmp/pip-install-b1lgx33q/openai_99369f7e20574ac190c9a64d4957fe9e/openai/api_resources/abstract/api_resource.py", line 4, in <module>
          from openai import api_requestor, error, util
        File "/tmp/pip-install-b1lgx33q/openai_99369f7e20574ac190c9a64d4957fe9e/openai/api_requestor.py", line 21, in <module>
          import aiohttp
      ModuleNotFoundError: No module named 'aiohttp'

      During handling of the above exception, another exception occurred:

      Traceback (most recent call last):
        File "/usr/lib/python3/dist-packages/pip/_vendor/pep517/in_process/_in_process.py", line 363, in <module>
          main()
        File "/usr/lib/python3/dist-packages/pip/_vendor/pep517/in_process/_in_process.py", line 345, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
        File "/usr/lib/python3/dist-packages/pip/_vendor/pep517/in_process/_in_process.py", line 130, in get_requires_for_build_wheel
          return hook(config_settings)
        File "/usr/lib/python3/dist-packages/setuptools/build_meta.py", line 162, in get_requires_for_build_wheel
          return self._get_build_requires(
        File "/usr/lib/python3/dist-packages/setuptools/build_meta.py", line 143, in _get_build_requires
          self.run_setup()
        File "/usr/lib/python3/dist-packages/setuptools/build_meta.py", line 158, in run_setup
          exec(compile(code, __file__, 'exec'), locals())
        File "setup.py", line 3, in <module>
          setup()
        File "/usr/lib/python3/dist-packages/setuptools/__init__.py", line 153, in setup
          return distutils.core.setup(**attrs)
        File "/usr/lib/python3/dist-packages/setuptools/_distutils/core.py", line 122, in setup
          dist.parse_config_files()
        File "/usr/lib/python3/dist-packages/setuptools/dist.py", line 804, in parse_config_files
          parse_configuration(
        File "/usr/lib/python3/dist-packages/setuptools/config.py", line 158, in parse_configuration
          meta.parse()
        File "/usr/lib/python3/dist-packages/setuptools/config.py", line 498, in parse
          section_parser_method(section_options)
        File "/usr/lib/python3/dist-packages/setuptools/config.py", line 469, in parse_section
          self[name] = value
        File "/usr/lib/python3/dist-packages/setuptools/config.py", line 222, in __setitem__
          value = parser(value)
        File "/usr/lib/python3/dist-packages/setuptools/config.py", line 599, in _parse_version
          version = self._parse_attr(value, self.package_dir)
        File "/usr/lib/python3/dist-packages/setuptools/config.py", line 422, in _parse_attr
          module = importlib.import_module(module_name)
        File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
          return _bootstrap._gcd_import(name[level:], package, level)
        File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
        File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
        File "<frozen importlib._bootstrap>", line 992, in _find_and_load_unlocked
        File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
        File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
        File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
        File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
        File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
        File "<frozen importlib._bootstrap_external>", line 883, in exec_module
        File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
        File "/tmp/pip-install-b1lgx33q/openai_99369f7e20574ac190c9a64d4957fe9e/openai/__init__.py", line 9, in <module>
          from openai.api_resources import (
        File "/tmp/pip-install-b1lgx33q/openai_99369f7e20574ac190c9a64d4957fe9e/openai/api_resources/__init__.py", line 1, in <module>
          from openai.api_resources.completion import Completion  # noqa: F401
        File "/tmp/pip-install-b1lgx33q/openai_99369f7e20574ac190c9a64d4957fe9e/openai/api_resources/completion.py", line 4, in <module>
          from openai.api_resources.abstract import DeletableAPIResource, ListableAPIResource
        File "/tmp/pip-install-b1lgx33q/openai_99369f7e20574ac190c9a64d4957fe9e/openai/api_resources/abstract/__init__.py", line 3, in <module>
          from openai.api_resources.abstract.api_resource import APIResource
        File "/tmp/pip-install-b1lgx33q/openai_99369f7e20574ac190c9a64d4957fe9e/openai/api_resources/abstract/api_resource.py", line 4, in <module>
          from openai import api_requestor, error, util
        File "/tmp/pip-install-b1lgx33q/openai_99369f7e20574ac190c9a64d4957fe9e/openai/api_requestor.py", line 21, in <module>
          import aiohttp
      ModuleNotFoundError: No module named 'aiohttp'
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.

Deciphering the Output

The key part from this output was this line:

ModuleNotFoundError: No module named 'aiohttp'

This line indicates that the specific module aiohttp was missing. My initial thought was to check if this module was a prerequisite for OpenAI's package. Sometimes, missing dependencies can cause installation issues.

Another important piece of information shows that it originates from a subprocess and might not directly be a pip issue:

note: This error originates from a subprocess, and is likely not a problem with pip.

The Solution

After some digging around, I tried upgrading pip using:

pip install --upgrade pip

This gave me a readout of:

WARNING: The scripts pip, pip3 and pip3.10 are installed in '/home/NAME/.local/bin' which is not on PATH.

After the upgrade, it got me thinking. I am using this on a bare bones virtual machine, so I haven't messed around with paths or defining versions of programs. So I tried the install command again, this time using the specific pip version:

pip3.10 install openai

Voilà! I was good to go.