我正在使用 sklearn-1.5(版本 10)环境来部署使用 sklearn.ensemble._forest.RandomForestClassifier 的 ML 模型。部署端点时,我不断遇到 numpy 的依赖问题。
我特别收到以下错误:
ValueError: numpy.dtype size changed, may indicate binary incompatibility.
Expected 96 from C header, got 88 from PyObject
我该如何解决这个问题?
我尝试使用 pip 在 train.py 代码中强制安装正确的包(如环境中指定的):
subprocess.check_call([sys.executable, "-m", "pip", "install",
"numpy==1.22.0",
"pandas==1.5.3",
"scipy==1.8.0",
"matplotlib==3.5.3",
"scikit-image==0.19.3",
"contourpy==1.0.7",
"azure-storage-blob==12.19.0",
"--force-reinstall"])
但这没有什么区别。
以下是解决所面临问题所需的一些东西。
1.26.4
并且不要在您的环境中更新它。pip install numpy==1.26.4
scipy
和 scikit-learn
(不带二进制文件),因为安装的软件包是针对不同版本的 numpy
构建的。因此,您需要针对本地
scipy
重建 scikit-learn
和 numpy
。
pip uninstall -y scipy scikit-learn
pip install --no-binary scipy scikit-learn
在您的情况下,使用
subprocess
运行这些命令。
请参阅此 堆栈解决方案 了解更多信息。
如果您仍然面临这个问题,
检查
scikit-learn
、numpy
和其他依赖项之间的兼容性,并更新环境以匹配兼容版本。