Gianlucca Berardi
Gianlucca Berardi

Reputation: 11

Can't install gym[box2d] on Windows

I'm having trouble installing gym[box2d] on Windows. I have SWIG version 4.0.2, Python version 3.11.4, VSCode version 1.81, Conda version 23.7.2, pip version 23.1.2, gym version 0.26.2, Visual C++ compiler version 19.36.32537. I've tried following advices from other threads but none worked. Does anyone have an idea?

Here's what I've tried so far, and the error messages that resulted:

Requirement already satisfied: gym[box2d] in c:\users\user\miniconda3\lib\site-packages (0.26.2)
Requirement already satisfied: numpy>=1.18.0 in c:\users\user\miniconda3\lib\site-packages (from gym[box2d]) (1.25.2)
Requirement already satisfied: cloudpickle>=1.2.0 in c:\users\user\miniconda3\lib\site-packages (from gym[box2d]) (2.2.1)
Requirement already satisfied: gym-notices>=0.0.4 in c:\users\user\miniconda3\lib\site-packages (from gym[box2d]) (0.0.8)
Collecting box2d-py==2.3.5 (from gym[box2d])
  Using cached box2d-py-2.3.5.tar.gz (374 kB)
  Preparing metadata (setup.py) ... done
Collecting pygame==2.1.0 (from gym[box2d])
  Using cached pygame-2.1.0.tar.gz (5.8 MB)
  Preparing metadata (setup.py) ... error
  error: subprocess-exited-with-error

  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [77 lines of output]


      WARNING, No "Setup" File Exists, Running "buildconfig/config.py"
      Using WINDOWS configuration...

      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "C:\Users\user\AppData\Local\Temp\pip-install-4zzeib5u\pygame_d5d88c36f7d24fe48f5231f3f0ba68ee\setup.py", line 388, in <module>
          buildconfig.config.main(AUTO_CONFIG)
        File "C:\Users\user\AppData\Local\Temp\pip-install-4zzeib5u\pygame_d5d88c36f7d24fe48f5231f3f0ba68ee\buildconfig\config.py", line 234, in main
          deps = CFG.main(**kwds)
                 ^^^^^^^^^^^^^^^^
        File "C:\Users\user\AppData\Local\Temp\pip-install-4zzeib5u\pygame_d5d88c36f7d24fe48f5231f3f0ba68ee\buildconfig\config_win.py", line 511, in main
          return setup_prebuilt_sdl2(prebuilt_dir)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "C:\Users\user\AppData\Local\Temp\pip-install-4zzeib5u\pygame_d5d88c36f7d24fe48f5231f3f0ba68ee\buildconfig\config_win.py", line 471, in setup_prebuilt_sdl2
          DEPS.configure()
        File "C:\Users\user\AppData\Local\Temp\pip-install-4zzeib5u\pygame_d5d88c36f7d24fe48f5231f3f0ba68ee\buildconfig\config_win.py", line 336, in configure
          from . import vstools
        File "C:\Users\user\AppData\Local\Temp\pip-install-4zzeib5u\pygame_d5d88c36f7d24fe48f5231f3f0ba68ee\buildconfig\vstools.py", line 11, in <module>
          compiler.initialize()
        File "C:\Users\user\miniconda3\Lib\site-packages\setuptools\_distutils\msvc9compiler.py", line 403, in initialize
          vc_env = query_vcvarsall(VERSION, plat_spec)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "C:\Users\user\miniconda3\Lib\site-packages\setuptools\_distutils\msvc9compiler.py", line 281, in query_vcvarsall
          raise DistutilsPlatformError("Unable to find vcvarsall.bat")
      distutils.errors.DistutilsPlatformError: Unable to find vcvarsall.bat
      Making dir :prebuilt_downloads:
      
      ......

      Path for SDL: prebuilt-x64\SDL2-2.0.16
      ...Library directory for SDL: prebuilt-x64/SDL2-2.0.16/lib/x64
      ...Include directory for SDL: prebuilt-x64/SDL2-2.0.16/include
      Path for FONT: prebuilt-x64\SDL2_ttf-2.0.15
      ...Library directory for FONT: prebuilt-x64/SDL2_ttf-2.0.15/lib/x64
      ...Include directory for FONT: prebuilt-x64/SDL2_ttf-2.0.15/include
      Path for IMAGE: prebuilt-x64\SDL2_image-2.0.5
      ...Library directory for IMAGE: prebuilt-x64/SDL2_image-2.0.5/lib/x64
      ...Include directory for IMAGE: prebuilt-x64/SDL2_image-2.0.5/include
      Path for MIXER: prebuilt-x64\SDL2_mixer-2.0.4
      ...Library directory for MIXER: prebuilt-x64/SDL2_mixer-2.0.4/lib/x64
      ...Include directory for MIXER: prebuilt-x64/SDL2_mixer-2.0.4/include
      Path for PORTMIDI: prebuilt-x64
      ...Library directory for PORTMIDI: prebuilt-x64/lib
      ...Include directory for PORTMIDI: prebuilt-x64/include
      DLL for SDL2: prebuilt-x64/SDL2-2.0.16/lib/x64/SDL2.dll
      DLL for SDL2_ttf: prebuilt-x64/SDL2_ttf-2.0.15/lib/x64/SDL2_ttf.dll
      DLL for SDL2_image: prebuilt-x64/SDL2_image-2.0.5/lib/x64/SDL2_image.dll
      DLL for SDL2_mixer: prebuilt-x64/SDL2_mixer-2.0.4/lib/x64/SDL2_mixer.dll
      DLL for portmidi: prebuilt-x64/lib/portmidi.dll
      Path for FREETYPE not found.
      ...Found include dir but no library dir in prebuilt-x64.
      Path for PNG not found.
      ...Found include dir but no library dir in prebuilt-x64.
      Path for JPEG not found.
      ...Found include dir but no library dir in prebuilt-x64.
      DLL for freetype: prebuilt-x64/SDL2_ttf-2.0.15/lib/x64/libfreetype-6.dll

      ---
      For help with compilation see:
          .......
      ---

      [end of output]

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

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
Requirement already satisfied: gym[box2d] in c:\users\user\miniconda3\envs\gymenv\lib\site-packages (0.26.2)
Requirement already satisfied: numpy>=1.18.0 in c:\users\user\miniconda3\envs\gymenv\lib\site-packages (from gym[box2d]) (1.25.2)
Requirement already satisfied: cloudpickle>=1.2.0 in c:\users\user\miniconda3\envs\gymenv\lib\site-packages (from gym[box2d]) (2.2.1)
Requirement already satisfied: gym-notices>=0.0.4 in c:\users\user\miniconda3\envs\gymenv\lib\site-packages (from gym[box2d]) (0.0.8)
Collecting box2d-py==2.3.5 (from gym[box2d])
  Using cached box2d-py-2.3.5.tar.gz (374 kB)
  Preparing metadata (setup.py) ... done
Collecting pygame==2.1.0 (from gym[box2d])
  Using cached pygame-2.1.0.tar.gz (5.8 MB)
  Preparing metadata (setup.py) ... error
  error: subprocess-exited-with-error

  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [77 lines of output]


      WARNING, No "Setup" File Exists, Running "buildconfig/config.py"
      Using WINDOWS configuration...

      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "C:\Users\user\AppData\Local\Temp\pip-install-3fq2c1be\pygame_553078f1630748c69e33fe616ff4d37e\setup.py", line 388, in <module>
          buildconfig.config.main(AUTO_CONFIG)
        File "C:\Users\user\AppData\Local\Temp\pip-install-3fq2c1be\pygame_553078f1630748c69e33fe616ff4d37e\buildconfig\config.py", line 234, in main
          deps = CFG.main(**kwds)
                 ^^^^^^^^^^^^^^^^
        File "C:\Users\user\AppData\Local\Temp\pip-install-3fq2c1be\pygame_553078f1630748c69e33fe616ff4d37e\buildconfig\config_win.py", line 511, in main
          return setup_prebuilt_sdl2(prebuilt_dir)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "C:\Users\user\AppData\Local\Temp\pip-install-3fq2c1be\pygame_553078f1630748c69e33fe616ff4d37e\buildconfig\config_win.py", line 471, in setup_prebuilt_sdl2
          DEPS.configure()
        File "C:\Users\user\AppData\Local\Temp\pip-install-3fq2c1be\pygame_553078f1630748c69e33fe616ff4d37e\buildconfig\config_win.py", line 336, in configure
          from . import vstools
        File "C:\Users\user\AppData\Local\Temp\pip-install-3fq2c1be\pygame_553078f1630748c69e33fe616ff4d37e\buildconfig\vstools.py", line 11, in <module>
          compiler.initialize()
        File "C:\Users\user\miniconda3\envs\gymenv\Lib\site-packages\setuptools\_distutils\msvc9compiler.py", line 403, in initialize
          vc_env = query_vcvarsall(VERSION, plat_spec)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "C:\Users\user\miniconda3\envs\gymenv\Lib\site-packages\setuptools\_distutils\msvc9compiler.py", line 281, in query_vcvarsall
          raise DistutilsPlatformError("Unable to find vcvarsall.bat")
      distutils.errors.DistutilsPlatformError: Unable to find vcvarsall.bat
      Making dir :prebuilt_downloads:
      
      ..............

      Unzipping :prebuilt_downloads\prebuilt-x64-pygame-1.9.2-20150922.zip:
      copying into .\prebuilt-x64
      Path for SDL: prebuilt-x64\SDL2-2.0.16
      ...Library directory for SDL: prebuilt-x64/SDL2-2.0.16/lib/x64
      ...Include directory for SDL: prebuilt-x64/SDL2-2.0.16/include
      Path for FONT: prebuilt-x64\SDL2_ttf-2.0.15
      ...Library directory for FONT: prebuilt-x64/SDL2_ttf-2.0.15/lib/x64
      ...Include directory for FONT: prebuilt-x64/SDL2_ttf-2.0.15/include
      Path for IMAGE: prebuilt-x64\SDL2_image-2.0.5
      ...Library directory for IMAGE: prebuilt-x64/SDL2_image-2.0.5/lib/x64
      ...Include directory for IMAGE: prebuilt-x64/SDL2_image-2.0.5/include
      Path for MIXER: prebuilt-x64\SDL2_mixer-2.0.4
      ...Library directory for MIXER: prebuilt-x64/SDL2_mixer-2.0.4/lib/x64
      ...Include directory for MIXER: prebuilt-x64/SDL2_mixer-2.0.4/include
      Path for PORTMIDI: prebuilt-x64
      ...Library directory for PORTMIDI: prebuilt-x64/lib
      ...Include directory for PORTMIDI: prebuilt-x64/include
      DLL for SDL2: prebuilt-x64/SDL2-2.0.16/lib/x64/SDL2.dll
      DLL for SDL2_ttf: prebuilt-x64/SDL2_ttf-2.0.15/lib/x64/SDL2_ttf.dll
      DLL for SDL2_image: prebuilt-x64/SDL2_image-2.0.5/lib/x64/SDL2_image.dll
      DLL for SDL2_mixer: prebuilt-x64/SDL2_mixer-2.0.4/lib/x64/SDL2_mixer.dll
      DLL for portmidi: prebuilt-x64/lib/portmidi.dll
      Path for FREETYPE not found.
      ...Found include dir but no library dir in prebuilt-x64.
      Path for PNG not found.
      ...Found include dir but no library dir in prebuilt-x64.
      Path for JPEG not found.
      ...Found include dir but no library dir in prebuilt-x64.
      DLL for freetype: prebuilt-x64/SDL2_ttf-2.0.15/lib/x64/libfreetype-6.dll

      ---
      For help with compilation see:
          https://www.pygame.org/wiki/CompileWindows
      To contribute to pygame development see:
          https://www.pygame.org/contribute.html
      ---

      [end of output]

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

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
Traceback (most recent call last):
  File "C:\Users\user\miniconda3\envs\gymenv\Lib\site-packages\gym\envs\box2d\car_racing.py", line 23, in <module>
    import pygame
ModuleNotFoundError: No module named 'pygame'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\user\Desktop\UDEMY\Lunar Lander - Random\lunar_lander_random.py", line 4, in <module>
    env = gym.make('LunarLander-v2')
          ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\miniconda3\envs\gymenv\Lib\site-packages\gym\envs\registration.py", line 581, in make
    env_creator = load(spec_.entry_point)
                  ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\miniconda3\envs\gymenv\Lib\site-packages\gym\envs\registration.py", line 61, in load
    mod = importlib.import_module(mod_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\miniconda3\envs\gymenv\Lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1126, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\Users\user\miniconda3\envs\gymenv\Lib\site-packages\gym\envs\box2d\__init__.py", line 2, in <module>
    from gym.envs.box2d.car_racing import CarRacing
  File "C:\Users\user\miniconda3\envs\gymenv\Lib\site-packages\gym\envs\box2d\car_racing.py", line 26, in <module>
    raise DependencyNotInstalled(
gym.error.DependencyNotInstalled: pygame is not installed, run `pip install gym[box2d]`

I've tried every advice I could find on other threads but none solved my problem. Is the path forward installing a Linux virtual machine and doing everything there? I would really like to get over this problem so I can continue my course on Actor-Critic methods...

Thank you very much.

Upvotes: 1

Views: 747

Answers (1)

QED
QED

Reputation: 1

I too had problems with the installation on Windows. I solved them by installing "Visual Studio Installer" and the following tools:

{
  "version": "1.0",
  "components": [
    "Microsoft.VisualStudio.Component.Roslyn.Compiler",
    "Microsoft.Component.MSBuild",
    "Microsoft.VisualStudio.Component.CoreBuildTools",
    "Microsoft.VisualStudio.Workload.MSBuildTools",
    "Microsoft.VisualStudio.Component.Windows10SDK",
    "Microsoft.VisualStudio.Component.VC.CoreBuildTools",
    "Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
    "Microsoft.VisualStudio.Component.VC.Redist.14.Latest",
    "Microsoft.VisualStudio.Component.Windows11SDK.22621",
    "Microsoft.VisualStudio.Component.VC.CMake.Project",
    "Microsoft.VisualStudio.Component.TestTools.BuildTools",
    "Microsoft.VisualStudio.Component.VC.ASAN",
    "Microsoft.VisualStudio.Component.TextTemplating",
    "Microsoft.VisualStudio.Component.VC.CoreIde",
    "Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core",
    "Microsoft.VisualStudio.Workload.VCTools"
  ],
  "extensions": []
}

I remember, but I could be wrong, that SWIG is downloaded automatically from GYM.

Upvotes: 0

Related Questions