Collecting sklearn Using cached sklearn-0.0.post12.tar.gz (2.6 kB) Preparing metadata (setup.py) ... error error: subprocess-exited-with-error × python setup.py egg_info did not run successfully. │ exit code: 1 ╰─> [15 lines of output] The 'sklearn' PyPI package is deprecated, use 'scikit-learn' rather than 'sklearn' for pip commands. Here is how to fix this error in the main use cases: - use 'pip install scikit-learn' rather than 'pip install sklearn' - replace 'sklearn' by 'scikit-learn' in your pip requirements files (requirements.txt, setup.py, setup.cfg, Pipfile, etc ...) - if the 'sklearn' package is used by one of your dependencies, it would be great if you take some time to track which package uses 'sklearn' instead of 'scikit-learn' and report it to their issue tracker - as a last resort, set the environment variable SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL=True to avoid this error More information is available at https://github.com/scikit-learn/sklearn-pypi-package [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.
错误定位
这个错误是因为你尝试安装sklearn
包,而该包已经被弃用。现在,scikit-learn
包才是正确的包名。错误信息明确指出:
sklearn
PyPI包已弃用,应使用scikit-learn
。- 在所有pip命令和依赖文件中使用
scikit-learn
而不是sklearn
。
解决办法
安装正确的包:scikit-learn
:
pip install scikit-learn
更新依赖文件:
如果你有一个requirements.txt
文件或其他依赖文件,请确保将sklearn
替换为scikit-learn
。
具体步骤
- 安装
scikit-learn
:
pip install scikit-learn
2. 如果你有依赖文件(如requirements.txt
),请修改内容:
将requirements.txt
中的sklearn
替换为scikit-learn
。
- 重新安装依赖:
pip install -r requirements.txt
可能的其他情况
- 如果你的依赖包中有其他包依赖于
sklearn
,请查看该包的最新版本是否已经更新为依赖scikit-learn
,并尝试更新该包。如果该包没有更新,可以向包的维护者报告这个问题。 - 作为最后手段,你可以设置环境变量
SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL=True
,以便临时安装sklearn
,但这不推荐,因为长期来看你应该过渡到使用scikit-learn
。
总结
主要解决办法是改用scikit-learn
包,并在所有相关文件中更新依赖。如果仍然遇到问题,可以检查其他依赖包是否正确更新并兼容新的包名。