首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Windows ArcGIS Python 環境 sklearn 導入錯誤:NumPy 版本不兼容解決

     編輯:程式設計綜合問答

問題現象

ArcGIS 10.3 自帶 Python 2.7.8 (NumPy 1.7.1),手動安裝 SciPy 0.13.3 和 scikit-learn 0.16.0 後,導入 sklearn 報錯:

ValueError: numpy.ufunc has the wrong size, try recompiling

錯誤截圖

根本原因

NumPy ABI 不兼容:

  • scikit-learn 0.16.0 編譯時依賴的 NumPy API 版本 > 1.7.1
  • ArcGIS 綁定的 NumPy 1.7.1 過舊,C 擴展模塊二進制接口不匹配
  • 「wrong size」指 C 結構體大小不一致(如 PyUFuncObject)

解決方案

升級 NumPy 至兼容版本:

# 在 ArcGIS Python 環境中執行
pip install --upgrade numpy==1.9.1
pip install --upgrade scipy==0.15.1
# scikit-learn 0.16.0 可保留或重裝
pip install --upgrade scikit-learn

版本兼容性矩陣參考

scikit-learn最低 NumPy推薦 NumPy最低 SciPy
0.16.x1.8.21.9.x0.13.3
0.17.x1.9.21.10.x0.14.0
0.18.x1.10.01.11.x0.15.1

ArcGIS Python 環境特殊性

  • ArcGIS 安裝目錄下 python27 為獨立環境,勿污染系統 Python
  • 使用 C:\Python27\ArcGIS10.3\python.exe -m pip install ... 精確安裝
  • 升級 NumPy 可能導致 ArcPy 等原生模塊不兼容,**建議虛擬環境隔離**

最佳實踐:Conda 環境隔離

# 安裝 Miniconda
conda create -n arcgis_ml python=2.7 numpy=1.9.1 scipy=0.15.1 scikit-learn=0.16.1
conda activate arcgis_ml
# 需使用 ArcPy 時:sys.path.append(r"C:\Program Files\ArcGIS\Desktop10.3\arcpy")

總結

sklearn 導入 numpy.ufunc has the wrong size 經典報錯 = NumPy 版本過低導致 ABI 不兼容。升級 NumPy 至 1.9.1+、SciPy 至 0.15.1+ 即可解決。生產環境強烈建議使用 Conda 隔離環境,避免污染 ArcGIS 核心運行時。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved