2

在尝试在我的机器上安装 scikit-learn 时,我遇到了问题。我正在使用 Homebrew 的 Python 2.7.5 运行 OS X 10.8.4,并且安装了最新版本的 Scipy 和 Numpy。

我尝试通过 Pip 安装 scikit-learn 以及克隆最新的源代码并从头开始构建 - 这是我每次尝试构建时都会得到的。知道这里发生了什么吗?

1 warning and 3 errors generated.
In file included from sklearn/feature_extraction/_hashing.c:258:
In file included from /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/include/numpy/arrayobject.h:15:
In file included from /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/include/numpy/ndarrayobject.h:17:
In file included from /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/include/numpy/ndarraytypes.h:1728:
/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/include/numpy/npy_deprecated_api.h:11:2: warning: "Using deprecated NumPy API, disable it by #defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-W#warnings]
#warning "Using deprecated NumPy API, disable it by #defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION"
 ^
sklearn/feature_extraction/_hashing.c:2439:15: error: assigning to 'int' from incompatible type 'void'
    __pyx_t_2 = PyErr_BadArgument(); if (unlikely(__pyx_t_2 == 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
              ^ ~~~~~~~~~~~~~~~~~~~
sklearn/feature_extraction/_hashing.c:4833:96: error: use of undeclared identifier 'PyBoolObject'
  __pyx_ptype_7cpython_4bool_bool = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "bool", sizeof(PyBoolObject), 0); if (unlikely(!__pyx_ptype_7cpython_4bool_bool)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
                                                                                               ^
sklearn/feature_extraction/_hashing.c:4834:105: error: use of undeclared identifier 'PyComplexObject'
  __pyx_ptype_7cpython_7complex_complex = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "complex", sizeof(PyComplexObject), 0); if (unlikely(!__pyx_ptype_7cpython_7complex_complex)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
                                                                                                        ^
1 warning and 3 errors generated.
error: Command "cc -fno-strict-aliasing -fno-common -dynamic -I/usr/local/include -I/usr/local/opt/sqlite/include -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/include -I/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/include -I/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c sklearn/feature_extraction/_hashing.c -o build/temp.macosx-10.8-x86_64-2.7/sklearn/feature_extraction/_hashing.o" failed with exit status 1
4

2 回答 2

0

升级到 OSX 10.9 Mavericks 后,我遇到了同样的构建问题。我通过运行解决了它:

xcode-select --install

更新 XCode 命令行工具。

我还通过自制库升级了所有内容:

brew update
brew doctor
# fix all reported issues
brew upgrade

我不得不卸载并重新安装以前针对不兼容的 C++ 标准库版本构建的一些依赖项。

于 2013-10-25T14:33:03.497 回答
0

我在 OSX 10.9 Mavericks 上遇到了类似的问题,也许它会在 OSX 10.8.4 上帮助你,或者如果你将来升级你的系统。基于这个答案和进一步的研究,我了解到您需要安装 XCode 命令行工具,该工具通常在终端上运行:

xcode-select --install

如果可行,您将直接进入此答案末尾的 Homebrew 步骤。但是,一些用户(如我自己)可能无法运行它,因为命令行工具现在随 Xcode 一起提供,并且不再以这种方式可用。大概会说:

“无法安装该软件,因为它当前无法从软件更新服务器获得。”

事实证明,升级或重新安装 Xcode 也可能不起作用,显然它不是以这种方式交付给我的。幸运的是,还有另一种获取此命令行工具的方法(我在此处阅读):

  1. 打开 Xcode
  2. 在应用程序菜单项“Xcode”中选择 Open Developer Tool > More Developer Tools...
  3. 这会将您带到一个包含大量软件的站点。继续下载并安装“Xcode 的命令行工具 (OS X Mavericks) - 2013 年 10 月下旬”。
  4. 如果您不是 Mavericks 用户,您也会找到自己的版本。

然后你尝试再次安装 Scikit-Learn。如果它仍然没有帮助,Xcode 可能没有指向正确的位置。你要么试试这个(来源在这里):

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

或者那个(来源在这里):

sudo xcode-select -switch /Library/Developer/CommandLineTools

第一个Xcode.app是对我有用的。通过这种方式,您当然可以防止 Git 命令行也出现故障的另一个问题,这会在下一步也是最后一步:Homebrew 中给您带来麻烦。这是因为 Homebrew 依赖于 Git 才能正常工作。

自制步骤:

brew update
brew doctor
# fix all reported issues
brew upgrade

如果仍然无法正常工作,请重新安装 Homebrew ( Homebrew homepage ) 并再次安装。我希望这能解决你的问题:)

于 2013-11-08T03:12:09.250 回答