我在 Windows 上安装gym[box2d] 时遇到问题。我有 SWIG 版本 4.0.2、Python 版本 3.11.4、VSCode 版本 1.81、Conda 版本 23.7.2、pip 版本 23.1.2、gym 版本 0.26.2、Visual C++ 编译器版本 19.36.32537。我尝试遵循其他线程的建议,但没有任何效果。有人有想法吗?
这是我迄今为止尝试过的方法,以及导致的错误消息:
pip install gym[box2d]
: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.
conda create -c conda-forge -n gymenv swig pip
,然后conda activate gymenv
,然后pip install Box2D gym
,然后pip install gym[box2d]
: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.
gymenv
内运行我的代码(取决于Box2D)时,这就是我得到的结果(它说“pygame未安装,运行pip install gym[box2d]
”):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]`
我已经尝试了在其他线程上找到的所有建议,但都没有解决我的问题。下一步是安装 Linux 虚拟机并在那里完成所有操作吗?我真的很想克服这个问题,这样我就可以继续我的 Actor-Critic 方法课程......
非常感谢。