错误:安装Fatiando(Python包)时,命令“gcc”失败,退出状态为1。

3
我正在尝试安装 Python 的地球物理建模软件包 Fatiando。 我使用的是 OS X v10.9.5 的 Mac。我按照官方网站推荐的安装方法(通过 Anaconda)获取了 Fatiando 的所有依赖项。我已经安装了 Xcode。
但是,我收到了一系列警告信息和一个最终的错误消息:
    fatiando/gravmag/_polyprism.c:349:10: fatal error: 'omp.h' file not found

    #include "omp.h"

             ^

    1 warning and 1 error generated.

    error: command 'gcc' failed with exit status 1

    ----------------------------------------
    Command "//anaconda/bin/python -c "import setuptools, tokenize;__file__='/var/folders/32/mwq0jhwd3dx7vjqmm8hkljp80000gn/T/pip-QFjo6d-build/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/32/mwq0jhwd3dx7vjqmm8hkljp80000gn/T/pip-CY4vyX-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /var/folders/32/mwq0jhwd3dx7vjqmm8hkljp80000gn/T/pip-QFjo6d-build
Macintosh-5:fatiando matteoniccoli$ 

完整的终端输出(1100+行)可以在这里找到。
我已经联系了开发人员,这似乎不是Fatiando的问题。
有什么建议吗?
更新,3月15日
当我第一次发布这篇文章时,我没有安装Xcode,然后我从Apple store下载了最新的Xcode。再试一次,得到相同的消息。然后我读到了这个,并从这里下载了gcc,并直接安装。当我在终端上输入:gcc --version时,我得到了这个:i686-apple-darwin11-llvm-gcc-4.2(GCC)4.2.1(基于Apple Inc. build 5658)(LLVM build 2335.15.00)之后,我仍然收到类似的消息。按照另一个stackoverflow的提示,我尝试从这里安装setuptools,使用curl https://bootstrap.pypa.io/ez_setup.py -o - | python。现在,当我尝试安装fatiando时,我得到了不同的错误(在长输出的末尾)。
fatiando/gravmag/_polyprism.c:349:10: fatal error: 'omp.h' file not found

    #include "omp.h"

             ^  

    1 warning and 1 error generated.  

    error: command '/usr/bin/clang' failed with exit status 1

    ----------------------------------------

    Command "//anaconda/bin/python -c "import setuptools, tokenize;__file__='/private/var/folders/32/mwq0jhwd3dx7vjqmm8hkljp80000gn/T/pip-build-m1ieVO/fatiando/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/32/mwq0jhwd3dx7vjqmm8hkljp80000gn/T/pip-9wI6Z7-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/var/folders/32/mwq0jhwd3dx7vjqmm8hkljp80000gn/T/pip-build-m1ieVO/fatiando

有人在论坛上通过邮件问我: 关于Fatiando,你是否安装了Xcode命令行工具?例如,参考这个链接 http://railsapps.github.io/xcode-command-line-tools.html

但是当我尝试按照建议验证已成功安装Xcode命令行工具时,出现了下面的情况,所以我认为这不是问题的原因:

-bash: /Library/Developer/CommandLineTools: is a directory

3月16日更新 尝试了Leo Uieda建议的解决方案。

pip install --upgrade https://github.com/fatiando/fatiando/archive/kill-omp.zip命令执行没有问题,但是执行pip install --upgrade https://github.com/fatiando/fatiando/archive/master.zip后回到了起点:

...
...    
fatiando/gravmag/_polyprism.c:349:10: fatal error: 'omp.h' file not found

        #include "omp.h"

                 ^

        1 warning and 1 error generated.

        error: command '/usr/bin/clang' failed with exit status 1

        ----------------------------------------
        Rolling back uninstall of fatiando

请在问题中包含终端输出,而不是外部页面。 - Ismail Badawi
这个文件非常长,Ismail,超过了1100行。我应该包含整个文件吗?我不确定哪些是相关的,哪些不是。 - MyCarta
2
可能相关:https://dev59.com/gF8e5IYBdhLWcg3wLYHt - cel
2个回答

3
这是Fatiando安装中非常常见的问题,尤其是在Windows和Mac上。在fatiando.gravmag正演建模模块中,PR 106引入了OpenMP。它很容易实现(只需用prange(ndata)替换range(ndata)),可以使顺序执行速度提高1.5-2倍,并自动进行并行执行。因此,在那个时候,它似乎是一个好的权衡(“只需安装一个额外的依赖项?会有什么问题吗?”)。
问题出现在Anaconda gcc和默认的Mac gcc没有OpenMP。因此,Windows用户必须安装额外的依赖项(按照特定的顺序,就像一个邪恶的仪式),而Mac用户则必须自己解决问题。

为了更好地使用multiprocessingnumba,Fatiando(#169)将删除OpenMP和编译的Cython模块。这将使它成为一个纯Python包(无需编译),并且大部分安装问题应该得到解决。

同时,PR 177从Cython模块中删除了OpenMP要求。这应该可以解决您当前的安装问题。要立即获得更改,请通过运行以下命令从kill-omp分支安装版本:

pip install --upgrade https://github.com/fatiando/fatiando/archive/kill-omp.zip

如果上述命令无法运行,说明拉取请求已合并到项目的主分支(master)中。如果是这种情况,您可以从 master 分支安装最新版本:
pip install --upgrade https://github.com/fatiando/fatiando/archive/master.zip

这些更改将包含在未来的v0.4版本中。希望这解决了你的问题。

我今晚会尝试。 - MyCarta
1
抱歉,我并不是说你应该同时运行这两个命令。现在只需使用第一个命令即可。将来,它将被合并到主分支中,并正式成为软件包的一部分。你应该先卸载Fatiando,以确保安装顺利。 - Leo Uieda

2

请告诉我您正在使用的gcc版本,这将有助于我们更好地为您提供帮助。

在v4.9之前,gcc没有内置OpenMP

参考此答案,可以帮助您通过xcode更新gcc。


当我在终端上输入:gcc --version,我得到了这个输出:i686-apple-darwin11-llvm-gcc-4.2(GCC)4.2.1(基于Apple Inc. build 5658)(LLVM build 2335.15.00)-请参见我对问题的更新。 - MyCarta
第二个和第三个答案中的建议都不起作用。我遵循了这个教程https://solarianprogrammer.com/2013/06/11/compiling-gcc-mac-os-x/中的第一个答案,将尝试它。 - MyCarta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接