【问题标题】:LHAPDF: undefined symbol when running in PythonLHAPDF:在 Python 中运行时未定义的符号
【发布时间】:2017-10-18 20:18:58
【问题描述】:

我正在尝试使用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:

希望大家帮忙!

【问题讨论】:

  • 问题是主 LHAPDF lib 目录没有链接到我的 LD_LIBRARY_PATH。 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/LHAPDF/lib/libLHAPDF.so 解决了它,如果有人需要解决方案。

标签: python c++ linux python-2.7 ubuntu


【解决方案1】:

如果有人想要解决方案,我已经解决了(在外部帮助下)。问题是主 LHAPDF lib 目录没有链接到我的 LD_LIBRARY_PATH。这个命令行解决了它:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/LHAPDF/lib/libLHAP‌​DF.so

(我添加到我的 ~/.bashrc 文件中)。

【讨论】:

  • 太棒了!我希望它会这么直接。
【解决方案2】:

我无法谈论您的具体问题,但是当我收到此类错误时,它源于包之间的版本不匹配:lhapdf 依赖于另一个包来定义那个神秘的“半隐藏”符号,但是它所依赖的包的版本与预期的不同;旧/新版本不提供该符号。

【讨论】:

  • 感谢您的帮助!我只是想尝试一下,但后来其他人(stackoverflow 之外)告诉我问题出在哪里,现在已经解决了(请参阅我对原始帖子的评论)。
  • 太棒了!请记住对有用的东西进行投票并接受您最喜欢的答案(即使您必须自己编写),以便 Stack Overflow 可以正确存档问题。我们希望它成为有用的、可搜索答案的存储库。
  • 好的,感谢您的提示!我实际上赞成你的回答,因为它对可能有类似问题的人来说是快速、相关和有用的,但我的赞成票没有出现,因为我的声誉仍然太低:P。
  • 我知道;我认为你必须达到 50 分。作为发帖人,您仍然应该接受您的回答。
  • 是的,我刚刚做到了,我必须等一天才能做到。
【解决方案3】:

这是(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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    相关资源
    最近更新 更多