Windows下pip安装JupyterLab报subprocess-exited-with-error如何解决
问题描述
我尝试在本地Windows系统上安装Jupyter Notebook,设备已安装并启用WSL,暂不确定WSL是否会对安装流程造成干扰。
执行pip install jupyterlab命令后,得到如下输出:
Using cached jupyterlab-3.4.3-py3-none-any.whl (8.8 MB) Collecting jupyterlab-server~=2.10 Using cached jupyterlab_server-2.14.0-py3-none-any.whl (54 kB) Collecting nbclassic~=0.2 Using cached nbclassic-0.3.7-py3-none-any.whl (13 kB) Collecting jinja2>=2.1 Using cached Jinja2-3.1.2-py3-none-any.whl (133 kB) Collecting jupyter-server~=1.16 Using cached jupyter_server-1.18.0-py3-none-any.whl (344 kB) Collecting ipython Using cached ipython-8.4.0-py3-none-any.whl (750 kB) Collecting jupyter-core Using cached jupyter_core-4.10.0-py3-none-any.whl (87 kB) Collecting tornado>=6.1.0 Using cached tornado-6.1.tar.gz (497 kB) Preparing metadata (setup.py) ... done Requirement already satisfied: packaging in c:\msys64\mingw64\lib\python3.9\site-packages (from jupyterlab) (21.3) Collecting MarkupSafe>=2.0 Using cached MarkupSafe-2.1.1.tar.gz (18 kB) Preparing metadata (setup.py) ... done Collecting prometheus-client Using cached prometheus_client-0.14.1-py3-none-any.whl (59 kB) Collecting traitlets>=5.1 Using cached traitlets-5.3.0-py3-none-any.whl (106 kB) Collecting websocket-client Using cached websocket_client-1.3.3-py3-none-any.whl (54 kB) Collecting pywinpty Using cached pywinpty-2.0.5.tar.gz (23 kB) Installing build dependencies ... error error: subprocess-exited-with-error × pip subprocess to install build dependencies did not run successfully. │ exit code: 1 ╰─> [63 lines of output] Collecting maturin<0.13,>=0.12.6 Using cached maturin-0.12.20.tar.gz (156 kB) Installing build dependencies: started Installing build dependencies: finished with status 'done' Getting requirements to build wheel: started Getting requirements to build wheel: finished with status 'error' error: subprocess-exited-with-error Getting requirements to build wheel did not run successfully. exit code: 1 [40 lines of output] Traceback (most recent call last): File "C:\Users\SMaronas\AppData\Local\Temp\tmp8a0ebdap_in_process.py", line 363, in <module> main() File "C:\Users\SMaronas\AppData\Local\Temp\tmp8a0ebdap_in_process.py", line 345, in main json_out['return_val'] = hook(**hook_input['kwargs']) File "C:\Users\SMaronas\AppData\Local\Temp\tmp8a0ebdap_in_process.py", line 124, in get_requires_for_build_wheel backend = _build_backend() File "C:\Users\SMaronas\AppData\Local\Temp\tmp8a0ebdap_in_process.py", line 89, in _build_backend obj = import_module(mod_path) File "C:\msys64\mingw64\lib\python3.9\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 680, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 850, in exec_module File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "C:\Users\SMaronas\AppData\Local\Temp\pip-build-env-riviqm6h\overlay\lib\python3.9\site-packages\setuptools\__init__.py", line 241, in <module> monkey.patch_all() File "C:\Users\SMaronas\AppData\Local\Temp\pip-build-env-riviqm6h\overlay\lib\python3.9\site-packages\setuptools\monkey.py", line 99, in patch_all patch_for_msvc_specialized_compiler() File "C:\Users\SMaronas\AppData\Local\Temp\pip-build-env-riviqm6h\overlay\lib\python3.9\site-packages\setuptools\monkey.py", line 162, in patch_for_msvc_specialized_compiler patch_func(*msvc9('find_vcvarsall')) File "C:\Users\SMaronas\AppData\Local\Temp\pip-build-env-riviqm6h\overlay\lib\python3.9\site-packages\setuptools\monkey.py", line 149, in patch_params mod = import_module(mod_name) File "C:\msys64\mingw64\lib\python3.9\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 680, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 850, in exec_module File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "C:\Users\SMaronas\AppData\Local\Temp\pip-build-env-riviqm6h\overlay\lib\python3.9\site-packages\setuptools\_distutils\msvc9compiler.py", line 295, in <module> raise DistutilsPlatformError("VC %0.1f is not supported by this module" % VERSION) distutils.errors.DistutilsPlatformError: VC 6.0 is not supported by this module [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. [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. error: subprocess-exited-with-error × pip subprocess to install build dependencies 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.
已尝试执行pip install wheel命令排查问题,返回结果显示wheel已安装:
Requirement already satisfied: wheel in c:\msys64\mingw64\lib\python3.9\site-packages (0.37.1)
此外还尝试过完全卸载并重新安装Python,上述问题仍未得到解决。
问题根因
和WSL完全无关。报错核心原因是当前使用的Python是MSYS2 MinGW64 环境下的移植版本,不是Python官方发布的原生Windows版本。这类移植版Python默认使用MinGW GCC编译链,而pip安装pywinpty依赖时拉取的新版setuptools会强制检测MSVC编译环境,检测到的VC版本不兼容就会直接抛出错误。重装Python没解决是因为重装的还是MSYS2源里的MinGW版Python,环境本身没有变化。
解决方案
按优先级选任意一种即可:
- 方案1(最省事):下载Python官方Windows安装包重新安装,安装时勾选Add Python to PATH选项,安装完成后打开新的cmd/PowerShell窗口,确认
where python返回的路径是C:\Users\你的用户名\AppData\Local\Programs\Python\开头的官方路径,再执行pip install jupyterlab即可正常安装,不会触发源码编译报错。 - 方案2(继续用MSYS2环境):不要通过pip安装,直接用MSYS2的pacman包管理器安装预编译好的JupyterLab,执行命令:
这种方式安装的包都是MinGW环境提前编译好的,不需要本地走编译流程,不会触发MSVC版本检测报错。pacman -S mingw-w64-x86_64-jupyterlab - 方案3(保留现有Python、用pip安装):提前通过pacman安装编译好的pywinpty依赖,再执行pip安装,命令如下:
此时pip检测到pywinpty已经存在,就不会再拉取源码尝试编译,自然不会触发报错。pacman -S mingw-w64-x86_64-pywinpty pip install jupyterlab
注意:如果选方案1,记得把环境变量里MSYS2的Python路径优先级调低,或者直接用官方Python的绝对路径执行pip,避免终端还是调用到MSYS2里的Python版本。
内容的提问来源于stack exchange,提问作者sebsmgzz
相关产品推荐
相关产品推荐

