安装pyamg时出现错误:clang: error: no such file or directory: '“-I/.../boost_1_59_0”'。

8
我正在尝试在虚拟环境中安装pyamg。然而,我遇到了以下错误。我使用的是Mac OS。
c++: pyamg/amg_core/amg_core_wrap.cxx
clang: error: no such file or directory: '“-I/Users/mas/PycharmProjects/kaggle-ndsb/boost_1_59_0”'
clang: error: no such file or directory: '“-I/Users/mas/PycharmProjects/kaggle-ndsb/boost_1_59_0”'
error: Command "c++ -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -arch i386 -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE “-I/Users/mas/PycharmProjects/kaggle-ndsb/boost_1_59_0” -arch x86_64 -arch i386 -pipe -D__STDC_FORMAT_MACROS=1 -I/Users/mas/PycharmProjects/Whale/Zahraa5/lib/python2.7/site-packages/numpy/core/include -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c pyamg/amg_core/amg_core_wrap.cxx -o build/temp.macosx-10.10-intel-2.7/pyamg/amg_core/amg_core_wrap.o" failed with exit status 1

2
这些引号看起来很奇怪。那些路径在哪里设置?我认为它们应该是 " 符号。 - oarfish
就我而言,使用pip安装也失败了,尽管出现了不同的错误。 - oarfish
1
你能否添加更多信息,显示你正在尝试如何安装pyamg?你是直接从源目录构建它吗(即使用python setup.py install)?错误似乎是由于到Boost包含目录的无效路径引起的(-I/Users/mas/PycharmProjects/kaggle-ndsb/boost_1_59_0)。你是否在某个地方安装了Boost?如果是,请问在哪里安装了? - ali_m
1
@ali_m 通过从我的.bash_profile文件中删除无效路径解决了问题。 - MAS
1
@ali_m 这些是我删除的行: export CPPFLAGS="-I/Users/mas/PycharmProjects/kaggle-ndsb/boost_1_59_0" export LIBS="-L/Users/mas/PycharmProjects/kaggle-ndsb/boost_1_59_0/stage/lib" - MAS
显示剩余2条评论
3个回答

4

Use Anaconda or Miniconda

conda install pyamg

只需几秒钟即可完成。

您可以使用以下方法创建环境:

conda create --name my_env python=2.7

转换为它:

source activate my_env

并安装pyamg

conda install pyamg

您仍然可以使用pip安装conda无法找到的软件包。

生命太短暂了,不要浪费时间在编译问题上。 ;)


1
生活确实变得更轻松了,有了Anaconda。在尝试在不同的操作系统环境中安装库之后,它节省了我大量的时间。 - Matt

2
我很确定路径开头的-I是导致一切混乱的原因。我敢打赌,如果您尝试将那些导出语句添加回.bashrc,但删除-I-L前缀,那么您的原始命令将开始工作。
也许您之前有特定的原因加上这些前缀,但删除这些前缀可能会起作用。

这些路径如果没有-I-L标志将毫无意义,这些标志用于指定要添加到编译器头文件和库文件搜索路径开头的目录。事实上,这些路径并不需要(因为pyamg不需要Boost),但是删除-I-L前缀是没有意义的。 - ali_m

1
实际上,我认为评论中的@oarfish已经正确指出了问题。这些路径中有奇怪的字符,它们与通常的双引号符号"不同。
以下内容会导致错误:
~$ CPPFLAGS=“-I/Users/mas/PycharmProjects/kaggle-ndsb/boost_1_59_0” \
   LIBS=“-L/Users/mas/PycharmProjects/kaggle-ndsb/boost_1_59_0/stage/lib” \
   pip install pyamg

Collecting pyamg
  Downloading pyamg-3.0.1.tar.gz (759kB)
    100% |████████████████████████████████| 761kB 33.2MB/s 
Installing collected packages: pyamg
  Running setup.py install for pyamg
...
    creating build/temp.linux-x86_64-2.7
    creating build/temp.linux-x86_64-2.7/pyamg
    creating build/temp.linux-x86_64-2.7/pyamg/amg_core
    compile options: '-D__STDC_FORMAT_MACROS=1 -I/home/alistair/.venvs/pyamg/local/lib/python2.7/site-packages/numpy/core/include -I/usr/include/python2.7 -c'
    c++: pyamg/amg_core/amg_core_wrap.cxx
    g++: error: “-I/Users/mas/PycharmProjects/kaggle-ndsb/boost_1_59_0”: No such file or directory
    g++: error: “-I/Users/mas/PycharmProjects/kaggle-ndsb/boost_1_59_0”: No such file or directory
    error: Command "c++ -pthread -DNDEBUG -g -fwrapv -O2 -Wall -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security “-I/Users/mas/PycharmProjects/kaggle-ndsb/boost_1_59_0” -fPIC -D__STDC_FO
RMAT_MACROS=1 -I/home/alistair/.venvs/pyamg/local/lib/python2.7/site-packages/numpy/core/include -I/usr/include/python2.7 -c pyamg/amg_core/amg_core_wrap.cxx -o build/temp.linux-x86_64-2.7/pyamg/amg_core/amg_core_wrap.o" failed with exit 
status 1

    ----------------------------------------
Command "/home/alistair/.venvs/pyamg/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip-build-Cl5_2g/pyamg/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" insta
ll --record /tmp/pip-kkjcoa-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/alistair/.venvs/pyamg/include/site/python2.7/pyamg" failed with error code 1 in /tmp/pip-build-Cl5_2g/pyamg

使用双引号"符号安装成功:

~$ CPPFLAGS="-I/Users/mas/PycharmProjects/kaggle-ndsb/boost_1_59_0" \
   LIBS="-L/Users/mas/PycharmProjects/kaggle-ndsb/boost_1_59_0/stage/lib" \
   pip install pyamg
Collecting pyamg
  Using cached pyamg-3.0.1.tar.gz
Installing collected packages: pyamg
  Running setup.py install for pyamg
Successfully installed pyamg-3.0.1

路径本身并不重要——尽管这些目录在我的机器上实际上不存在,但编译仍然成功。

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