gpt4 book ai didi

anaconda - 使用 Anaconda 在 OSX 上安装 GalSim 时遇到问题

转载 作者:行者123 更新时间:2023-12-02 21:55:00 25 4
gpt4 key购买 nike

我一直在尝试在 OSX 10.9 Mavericks 上安装 GalSim,并安装了 Anaconda 并将其设置为默认 python,但遇到了以下错误:

Unable to build a python loadable module using the python executable:
/usr/bin/env python,
the library name libpython2.7.a,
and the libdir //anaconda/lib/python2.7/config.
If these are not the correct library names, you can tell scons the
correct names to use with the flags EXTRA_LIB_PATH and/or EXTRA_LIBS.

在检查我的 config.log 文件时,尽管我确定使用的编译器是 clang++,但还是有一些 Undefined Symbols for Architecture x86_64: 的实例,如 GalSim 常见问题解答中的建议。

以下情况还有很多实例:

/usr/bin/env python < .sconf_temp/conftest_73 > .sconf_temp/conftest_73.out
Fatal Python error: PyThreadState_Get: no current thread
sh: line 1: 17019 Abort trap: 6 /usr/bin/env python < ".sconf_temp/conftest_73" > ".sconf_temp/conftest_73.out"

我不知道该如何补救这种情况。我已经重新安装了 Boost 好几次,每次都在第一次之后使用 ./b2 -a 命令。我已确保 boost 引用了 /anaconda/bin/python,并通过检查每个安装的 project-config.jam 文件来确认这一点。我已经使用了这些命令

./bootstrap.sh
./b2 -a toolset=clang cxxflags="-stdlib=libc++" linkflags="-stdlib=libc++" install

按照 GalSim 常见问题解答中的建议。我真的不知道除了尝试重新安装所有必需的软件包之外还可以尝试什么。在我去最后的目的地之前,有人对我该做什么有什么建议吗?如有任何帮助,我们将不胜感激。

下面是我上次运行 scons 的输出:

scons: Reading SConscript files ...
SCons is version 2.3.1 using python version 2.7.6
Python is from //anaconda/include/python2.7
Using the following (non-default) scons options:
CXX = clang++
These can be edited directly in the file gs_scons.conf.
Type scons -h for a full list of available options.
Using python = /usr/bin/env python
Using default PYPREFIX = //anaconda/lib/python2.7/site-packages
Using compiler: /usr/bin/clang++
compiler version: 5.1
Determined that a good number of jobs = 2
Checking for C++ header file fftw3.h... yes
Checking for correct FFTW linkage... yes
Checking for boost header files... yes
Checking for C++ header file TMV.h... yes
Using TMV_LINK file: /usr/local/share/tmv/tmv-link
-ltmv -lblas
Mac version is 10.9.3
XCode version is 5.1.1
Checking for correct TMV linkage... (this may take a little while)
Checking for correct TMV linkage... yes
Checking if we can build against Python...
Unable to build a python loadable module using the python executable:
/usr/bin/env python,
the library name libpython2.7.a,
and the libdir //anaconda/lib/python2.7/config.
If these are not the correct library names, you can tell scons the
correct names to use with the flags EXTRA_LIB_PATH and/or EXTRA_LIBS.

Please fix the above error(s) and rerun scons.
Note: you may want to look through the file INSTALL.md for advice.
Also, if you are having trouble, please check the INSTALL FAQ at
https://github.com/GalSim-developers/GalSim/wiki/Installation%20FAQ

最佳答案

我认为问题的关键在于 anaconda 的 python 库没有正确设置安装名称。以下是 otool 在我的系统上报告的该库的内容:

$ otool -L /anaconda/lib/libpython2.7.dylib 
/anaconda/lib/libpython2.7.dylib:
libpython2.7.dylib (compatibility version 2.7.0, current version 2.7.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 476.0.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)

在 Mac 上(与其他 Unix/Linux 品种相反),运行时加载程序会查看要加载到 dylib 或可执行文件中的所有库的安装名称。由于 anaconda 在这里没有正确设置,因此当 GalSim 或 boost 针对它进行编译时,该库只有文件名,没有目录。所以加载器不知道它在哪里,就去正常的地方查找,首先找到系统版本。

user2932864 指出的答案基本上改变了运行时搜索顺序,将 anaconda 位置放在系统 python 之前,因此加载器找到 anaconda 版本。但是,如果您想在系统上使用两个 python 选项,则此解决方案效果不佳。更好的解决方案(IMO)是修复 anaconda 库文件。为此,只需键入(假设您的 anaconda 安装在/anaconda 中):

sudo install_name_tool -id /anaconda/lib/libpython2.7.dylib /anaconda/lib/libpython2.7.dylib 

完成此操作后,我能够成功安装 boost (1.53)

./bootstrap.sh --prefix=$HOME/anaconda_install/ --with-python=/anaconda/bin/python2.7
./b2 link=shared
./b2 link=shared install

但是boost也有同样的问题。他们也没有正确设置 libboost_python.dylib 的安装名称。如果这是您系统上唯一的 boost 安装,那么您可能没问题。但由于我有很多不同的版本,所以我不得不这样做

install_name_tool -id $HOME/anaconda_install/lib/libboost_python.dylib $HOME/anaconda_install/lib/libboost_python.dylib

然后我就可以使用 anaconda python 以正常方式安装 GalSim:

scons PYTHON=/anaconda/bin/python PREFIX=$HOME/anaconda_install BOOST_DIR=$HOME/anaconda_install
sudo scons install

关于anaconda - 使用 Anaconda 在 OSX 上安装 GalSim 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23771608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com