Windows11安装LangChain遇multidict构建错误:需Visual C++14.0+
问题概述
在Windows 11系统、Python 3.12环境下执行pip install langchain安装LangChain,多数依赖包可正常安装,但构建multidict包时失败,抛出subprocess-exited-with-error错误,核心提示为Microsoft Visual C++ 14.0 or greater is required。用户已安装MS Visual Studio C++ 2015 Redistributable,但pip未识别该组件,导致安装中断,完整报错日志如下:
Building wheel for multidict (pyproject.toml) ... error error: subprocess-exited-with-error × Building wheel for multidict (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [74 lines of output] ********************* * Accelerated build * ********************* running bdist_wheel running build running build_py creating build creating build\lib.win-amd64-cpython-312 creating build\lib.win-amd64-cpython-312\multidict copying multidict\_abc.py -> build\lib.win-amd64-cpython-312\multidict copying multidict\_compat.py -> build\lib.win-amd64-cpython-312\multidict copying multidict\_multidict_base.py -> build\lib.win-amd64-cpython-312\multidict copying multidict\_multidict_py.py -> build\lib.win-amd64-cpython-312\multidict copying multidict\__init__.py -> build\lib.win-amd64-cpython-312\multidict running egg_info writing multidict.egg-info\PKG-INFO writing dependency_links to multidict.egg-info\dependency_links.txt writing top-level names to multidict.egg-info\top_level.txt reading manifest file 'multidict.egg-info\SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no previously-included files matching '*.pyc' found anywhere in distribution warning: no previously-included files found matching 'multidict\_multidict.html' warning: no previously-included files found matching 'multidict\*.so' warning: no previously-included files found matching 'multidict\*.pyd' warning: no previously-included files found matching 'multidict\*.pyd' no previously-included directories found matching 'docs\_build' adding license file 'LICENSE' writing manifest file 'multidict.egg-info\SOURCES.txt' C:\Users\demotextxxx\AppData\Local\Temp\pip-build-env-b2hbx2bu\overlay\Lib\site-packages\setuptools\command\build_py.py:207: _Warning: Package 'multidict._multilib' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'multidict._multilib' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'multidict._multilib' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'multidict._multilib' to be distributed and are already explicitly excluding 'multidict._multilib' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) copying multidict\__init__.pyi -> build\lib.win-amd64-cpython-312\multidict copying multidict\py.typed -> build\lib.win-amd64-cpython-312\multidict running build_ext building 'multidict._multidict' extension error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/ [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for multidict Failed to build multidict ERROR: Could not build wheels for multidict, which is required to install pyproject.toml-based projects
解决办法
安装完整的Microsoft C++ Build Tools
Visual C++ Redistributable仅为运行时库,无法满足编译扩展包的需求。需下载并安装Microsoft C++ Build Tools,安装时务必勾选「Desktop development with C++」组件,确保包含MSVC v142及以上版本的工具集、对应的Windows SDK等核心编译组件。安装完成后重启终端,重新执行pip install langchain。直接安装预编译的multidict wheel包
若不想安装构建工具,可直接使用预编译的二进制包:pip install --force-reinstall multidict --only-binary :all:完成后再次执行
pip install langchain即可。验证环境变量配置
安装构建工具后,检查系统环境变量是否包含MSVC的路径(通常为C:\Program Files (x86)\Microsoft Visual Studio\<版本>\BuildTools\VC\Tools\MSVC\<版本号>\bin\Hostx64\x64),若未添加则手动加入,重启终端后重试安装。
内容的提问来源于stack exchange,提问作者Chandan

