安装gym[toy_text]时pygame编译报错:找不到vcvarsall.bat
解决gym[toy_text]安装时pygame编译找不到vcvarsall.bat的问题
我在Gym的Frozen Lake环境上实现Q-learning算法,重置环境时系统提示需安装gym[toy_text]。执行pip install gym[toy_text]命令时,在准备pygame 2.1.0元数据阶段出现报错,错误信息显示无法找到vcvarsall.bat,报错详情如下:
pip install gym[toy_text] Requirement already satisfied: gym[toy_text] in c:\users\darkian\appdata\local\programs\python\python311\lib\site-packages (0.26.2) Requirement already satisfied: numpy>=1.18.0 in c:\users\darkian\appdata\local\programs\python\python311\lib\site-packages (from gym[toy_text]) (1.24.2) Requirement already satisfied: cloudpickle>=1.2.0 in c:\users\darkian\appdata\local\programs\python\python311\lib\site-packages (from gym[toy_text]) (2.2.1) Requirement already satisfied: gym-notices>=0.0.4 in c:\users\darkian\appdata\local\programs\python\python311\lib\site-packages (from gym[toy_text]) (0.0.8) Collecting pygame==2.1.0 (from gym[toy_text]) 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\darkian\AppData\Local\Temp\pip-install-bhryef_3\pygame_243ddab4cefc40b08b484f49e504b24a\setup.py", line 388, in <module> buildconfig.config.main(AUTO_CONFIG) File "C:\Users\darkian\AppData\Local\Temp\pip-install-bhryef_3\pygame_243ddab4cefc40b08b484f49e504b24a\buildconfig\config.py", line 234, in main deps = CFG.main(**kwds) ^^^^^^^^^^^^^^^^ File "C:\Users\darkian\AppData\Local\Temp\pip-install-bhryef_3\pygame_243ddab4cefc40b08b484f49e504b24a\buildconfig\config_win.py", line 511, in main return setup_prebuilt_sdl2(prebuilt_dir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\darkian\AppData\Local\Temp\pip-install-bhryef_3\pygame_243ddab4cefc40b08b484f49e504b24a\buildconfig\config_win.py", line 471, in setup_prebuilt_sdl2 DEPS.configure() File "C:\Users\darkian\AppData\Local\Temp\pip-install-bhryef_3\pygame_243ddab4cefc40b08b484f49e504b24a\buildconfig\config_win.py", line 336, in configure from . import vstools File "C:\Users\darkian\AppData\Local\Temp\pip-install-bhryef_3\pygame_243ddab4cefc40b08b484f49e504b24a\buildconfig\vstools.py", line 11, in <module> compiler.initialize() File "C:\Users\darkian\AppData\Local\Programs\Python\Python311\Lib\site-packages\setuptools\_distutils\msvc9compiler.py", line 403, in initialize vc_env = query_vcvarsall(VERSION, plat_spec) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\darkian\AppData\Local\Programs\Python\Python311\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
解决办法
- 直接安装预编译的pygame二进制包,跳过编译步骤:
执行命令:pip install pygame==2.1.0 --only-binary :all:,强制使用现成的编译好的包,不用自己编译。或者尝试安装更高兼容版本:pip install pygame>=2.1.0 --only-binary :all:。 - 安装Visual Studio编译工具:
下载并打开Visual Studio Installer,安装「Desktop development with C++」工作负载,确保包含MSVC v143工具集(对应Python 3.11)。安装完成后重启命令行,再重新运行pip install gym[toy_text]。 - 跳过pygame依赖(仅文本模式运行):
如果不需要Frozen Lake的可视化界面,安装时可以排除pygame:pip install gym[toy_text] --exclude-deps pygame。之后运行环境时使用文本渲染模式:env = gym.make("FrozenLake-v1", render_mode="ansi")。
内容的提问来源于stack exchange,提问作者AdrienF
相关产品推荐
相关产品推荐

