【问题标题】:Segmentation fault while importing ggplot in python via rpy2通过rpy2在python中导入ggplot时出现分段错误
【发布时间】:2017-02-21 12:30:28
【问题描述】:

我在 python 中运行以下命令:

from rpy2.robjects.packages import importr
importr( 'ggplot2' )

这在 python-2.7.6 和 rpy2-2.8.3 中运行良好。但是在 python-2.7.8 和 rpy2-2.8.5 上运行时会出现以下错误:

/usr/local/lib/python2.7/dist-packages/rpy2/rinterface/__init__.py:186: RRuntimeWarning: Error in dyn.load(file, DLLpath = DLLpath, ...) : 
unable to load shared object '/usr/local/lib/R/site-library/Rcpp/libs/Rcpp.so':
/usr/local/lib/R/site-library/Rcpp/libs/Rcpp.so: undefined symbol: R_ClassSymbol
warnings.warn(x, RRuntimeWarning)
Segmentation fault (core dumped)

【问题讨论】:

  • 我还不是 python 用户,但在 R 世界中报告错误的做法是假设 seg-fault 是错误的事实指示,这些应该报告给任何责任方处理这些。对于有缺陷的 R 代码,不鼓励向 SO 报告错误。这个看起来你没有正确安装 Rcpp,但是你的 Python 包的作者应该检查这个问题,而不是让它通过 seg-fault 发出信号。添加了 [rcpp] 标签,以便 Dirk 可以提供任何进一步的见解。
  • 我和@42 在一起。您可能只需要重新安装 RPy2 和/或 Rcpp 堆栈。在我的 Ubuntu box(en) 上,你的两行 Python 代码在 Python 2.7 上都可以正常工作...
  • R_ClassSymbol 是libR.so 提供的符号,因此推测您的系统在某种程度上配置错误,导致rpy2 没有加载该共享对象。

标签: python r rcpp rpy2


【解决方案1】:
  1. rpy2 是一个包,可在您使用 python 时提供对 R 的访问。因此,首先确保在编译 R 时启用 R 共享库,如下所示: ./configure --prefix=* --with-x=no --enable-R-shlib=yes
  2. 确保在分发 rpy2 包之前指定了以下环境变量: 导出 C_INCLUDE_PATH=/path/to/R/lib64/R/include
  3. 最后但并非最不重要的一点是,只有在满足所有这些要求时安装的那些包才能被 importr 正确导入到 python 中。如果没有,您可能需要重新安装 R 包。

【讨论】:

    猜你喜欢
    • 2017-01-13
    • 2018-12-19
    • 2016-07-11
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    相关资源
    最近更新 更多