【问题标题】:rpy2.ipython errors with pandas / numpypandas / numpy 的 rpy2.ipython 错误
【发布时间】:2016-03-19 02:33:20
【问题描述】:

尝试使用 IPython 的 rpy2.ipython(以前称为“rmagic”)扩展来获得交互式 R(%R 线魔法和 %%R 单元魔法函数),我收到以下错误...

louis ~ $ python
Python 3.5.1 |Anaconda 2.4.0 (64-bit)| (default, Dec  7 2015, 11:16:01) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.

>>> import rpy2.ipython
Traceback (most recent call last):
  File "/home/louis/anaconda3/lib/python3.5/site-packages/pandas/__init__.py", line 7, in <module>
    from pandas import hashtable, tslib, lib
  File "pandas/src/numpy.pxd", line 157, in init pandas.hashtable (pandas/hashtable.c:38262)
  File "/home/louis/anaconda3/lib/python3.5/site-packages/numpy/__init__.py", line 180, in <module>
    from . import add_newdocs
  File "/home/louis/anaconda3/lib/python3.5/site-packages/numpy/add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "/home/louis/anaconda3/lib/python3.5/site-packages/numpy/lib/__init__.py", line 18, in <module>
    from .polynomial import *
  File "/home/louis/anaconda3/lib/python3.5/site-packages/numpy/lib/polynomial.py", line 20, in <module>
    from numpy.linalg import eigvals, lstsq, inv
  File "/home/louis/anaconda3/lib/python3.5/site-packages/numpy/linalg/__init__.py", line 51, in <module>
    from .linalg import *
  File "/home/louis/anaconda3/lib/python3.5/site-packages/numpy/linalg/linalg.py", line 29, in <module>
    from numpy.linalg import lapack_lite, _umath_linalg
ImportError: /home/louis/anaconda3/lib/python3.5/site-packages/numpy/linalg/lapack_lite.cpython-35m-x86_64-linux-gnu.so: undefined symbol: zgelsd_

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/louis/anaconda3/lib/python3.5/site-packages/rpy2/ipython/rmagic.py", line 59, in <module>
    from rpy2.robjects import pandas2ri as baseconversion
  File "/home/louis/anaconda3/lib/python3.5/site-packages/rpy2/robjects/pandas2ri.py", line 6, in <module>
    from pandas.core.frame import DataFrame as PandasDataFrame
  File "/home/louis/anaconda3/lib/python3.5/site-packages/pandas/__init__.py", line 13, in <module>
    "extensions first.".format(module))
ImportError: C extension: /home/louis/anaconda3/lib/python3.5/site-packages/numpy/linalg/lapack_lite.cpython-35m-x86_64-linux-gnu.so: undefined symbol: zgelsd_ not built. If you want to import pandas from the source directory, you may need to run 'python setup.py build_ext --inplace' to build the C extensions first.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/louis/anaconda3/lib/python3.5/site-packages/rpy2/ipython/__init__.py", line 1, in <module>
    from .rmagic import load_ipython_extension
  File "/home/louis/anaconda3/lib/python3.5/site-packages/rpy2/ipython/rmagic.py", line 63, in <module>
    from rpy2.robjects import numpy2ri as baseconversion
  File "/home/louis/anaconda3/lib/python3.5/site-packages/rpy2/robjects/numpy2ri.py", line 6, in <module>
    import numpy
  File "/home/louis/anaconda3/lib/python3.5/site-packages/numpy/__init__.py", line 180, in <module>
    from . import add_newdocs
  File "/home/louis/anaconda3/lib/python3.5/site-packages/numpy/add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "/home/louis/anaconda3/lib/python3.5/site-packages/numpy/lib/__init__.py", line 18, in <module>
    from .polynomial import *
  File "/home/louis/anaconda3/lib/python3.5/site-packages/numpy/lib/polynomial.py", line 13, in <module>
    import numpy.core.numeric as NX
AttributeError: module 'numpy' has no attribute 'core'

我一直忽略 Anaconda3 似乎是在 RHEL 上构建的这一事实(我在基于 Ubuntu 的 Linux Mint 上),但我现在想知道这是否可能是这里出现问题的原因- “没有为我的机器构建 C 扩展”?

由于它在 conda 虚拟环境中,我不确定如何解决此问题。

我应该尝试在~/anaconda3/lib/python3.5/site-packages/pandas 中使用python setup.py build_ext --inplace 吗?

当我逐步完成上述导入时,例如:

from numpy.linalg import lapack_lite, _umath_linalg

没有错误,所以我不确定实际上是否有未构建的文件,也许它只是一个变量被另一个变量掩蔽(如this question with similar error message but different traceback,即rpy2 中的错误)。

import numpy.core (等等)没有首先尝试加载 rpy2.ipython 工作正常

pip show的总结:

---
Metadata-Version: 2.0
Name: rpy2
Version: 2.7.5
---
Metadata-Version: 1.1
Name: numpy
Version: 1.10.1
---
Metadata-Version: 1.1
Name: pandas
Version: 0.17.0
---
Metadata-Version: 2.0
Name: ipython
Version: 4.0.1

(所有位置/home/louis/anaconda3/lib/python3.5/site-packages

来自cat /proc/versionlsb_release -a 的系统信息:

Linux version 3.13.0-35-generic (buildd@panlong) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ) #62-Ubuntu SMP Fri Aug 15 01:58:42 UTC 2014

LSB Version:    core-2.0-amd64:core-2.0-noarch:core-3.0-amd64:core-3.0-noarch:core-3.1-amd64:core-3.1-noarch:core-3.2-amd64:core-3.2-noarch:core-4.0-amd64:core-4.0-noarch:core-4.1-amd64:core-4.1-noarch

Description:    Linux Mint 17 Qiana

【问题讨论】:

    标签: numpy pandas ipython anaconda rpy2


    【解决方案1】:

    我怀疑 LAPACK 库的版本之间存在不兼容问题:在您的系统上运行时选择的版本、构建时使用的 numpy 以及构建时使用的 R。

    在您的虚拟环境中从源代码安装 numpy、R 和 rpy2 应该可以解决该问题。另一种方法是通知涉及的 anaconda 包的维护者,并查看他们确认 anaconda 打包的 numpy 和 R 使用相同的 LAPACK。

    【讨论】:

      猜你喜欢
      • 2017-02-06
      • 2016-05-26
      • 1970-01-01
      • 2016-03-14
      • 2020-10-17
      • 2020-06-22
      • 2014-06-18
      • 2018-02-08
      • 2016-04-27
      相关资源
      最近更新 更多