我试图使用LHAPDF的Python接口,但收到以下错误消息:
Traceback (most recent call last):
File "test.py", line 2, in <module>
import lhapdf
ImportError: /home/n17182559/LHAPDF/lib/python2.7/site-packages/lhapdf.so: undefined symbol: _ZN6LHAPDF6ConfigD1Ev
我在Ubuntu 17.04上运行,使用Python 2.7,安装了Boost并且有一个可用的C ++编译器(g ++)。我相信我已经成功安装了LHAPDF,因为我按照他们网站上的说明操作并没有收到任何错误消息(仅警告auto_ptr已被弃用,但我不认为我可以控制它)。我确实将〜/ LHAPDF / lib / python2.7 / sitepackages /目录添加到$ PYTHONPATH和〜/ LHAPDF / bin /目录到$ PATH。我正在使用LHAPDF 6.1.6(撰写本文时的最新版本)。
我从仅包含
的test.py文件中收到此错误消息#!/usr/bin/python
import lhapdf
如果它可以帮助你,我找到了similar problem的人,但原因似乎不一样(我没有安装Anaconda)。当他们从$ PATH中移除Anaconda来解决他们的问题时,这里是我的$ PATH和$ PYTHONPATH,因为它们可能是问题的根源(虽然我不知道如何):
$PATH
/home/n17182559/LHAPDF/bin:/opt/applications/geant4/geant4.10.02-install/bin:/home/n17182559/ROOT/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:
$PYTHONPATH
/home/n17182559/ROOT/lib:/home/n17182559/LHAPDF/lib/python2.7/site-packages:
希望你们能帮忙!
答案 0 :(得分:1)
如果有人想要解决方案,我解决了(外部帮助)。问题是主LHAPDF lib目录没有链接到我的LD_LIBRARY_PATH。这个命令行解决了它:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/LHAPDF/lib/libLHAPDF.so
(我添加到我的〜/ .bashrc文件中)。
答案 1 :(得分:0)
我无法解决您的具体问题,但是当我遇到这类错误时,它源于软件包之间的版本不匹配:lhapdf
依赖于另一个软件包来定义那个奥术&#34;半隐藏&#34;符号,但它依赖的包是与预期版本不同的版本;较旧/较新的版本不提供该符号。
答案 2 :(得分:0)
是(Python的)版本不匹配,可能是安装LHAPDF后升级Python造成的。
因此,您可能需要重新安装 LHAPDF,或者如果您使用两个版本的 Python,则可以安装第二个 LHAPDF(目前我不知道除此之外的其他解决方案)。
让我们假设您使用 6.2 或更高版本的 LHAPDF,这要简单得多。首先,您想在 shell 配置文件中设置路径,以便它指向要为其安装 LHAPDF 的 Python 版本。对于bash
,您可以
export PATH=path/to/python
那么你想跟着instruction去做
tar xf LHAPDF-6.X.Y.tar.gz
cd LHAPDF-6.X.Y
./configure --prefix=/path/for/installation
make
make install
安装完成后,可以通过
将LHAPDF添加到路径中export PYTHONPATH=path/to/lhapdf/lib/pythonx.y/site-packages/
export LD_LIBRARY_PATH=path/to/lhapdf/lib
export PATH=path/to/lhapdf/bin/:$PATH
export LHAPDF_DATA_PATH=path/to/lhapdf/share/LHAPDF