0

我的 R 版本是 3.4.1,python 版本是 3.5.2 ,操作系统是 Ubuntu 16.04.2

我在安装 rPython 时设置了 RPYTHON_PYTHON_VERSION=3.5,这是我用于 rPython 的默认 python 版本。

♥ python.exec('import sys')
♥ python.exec('print(sys.version)')
3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609]

当我通过 rPython 导入 numpy 时(在 python 3.5 中使用 import numpy 没有问题,一切正常。),我得到了这个:

♥ python.exec('import numpy')
Error in python.exec("import numpy") :
Importing the multiarray numpy extension module failed.  Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try `git clean -xdf` (removes all
files not under version control).  Otherwise reinstall numpy.

Original error was: /usr/local/lib/python3.5/dist-packages/numpy/core/multiarray.cpython-35m-x86_64-linux-gnu.so: undefined symbol: PyType_GenericNew

但是,如果我设置 RPYTHON_PYTHON_VERSION=2 并重新安装 rPython,那么 import numpy 就可以了。如何使用 python 3.5 在 rPython 下成功导入 numpy?

4

1 回答 1

0

首先,您可以将任何包从 R/rPython 导入 python 3.5.3 吗?

我也有这个问题。我得到的错误与海报完全相同(numpy 不会加载)。后来我发现我无法导入任何包。但是,我可以在 python 2.7.13 和 python 3.5.3 中导入包(只是不能通过 R/rPython)。这让我相信这是一个“rPython”R 包错误。以下是我为解决此问题而尝试做的事情:

1) 我尝试安装/重新安装 R 包 rPython 以使用 python 2.7.13 或 python 3.5.3。我可以通过重新安装 rPython 包将 R 连接到 python 2.7.13:

install.packages("rPython",lib= "home/myusername/R/x86_64-pc-linux-gnu-library/3.4", configure.vars= "RPYTHON_PYTHON_VERSION=2")

在安装过程中使用“RPYTHON_PYTHON_VERSION=3”同样允许我将 R 与 python 3.5.3 连接起来。当 rPython 连接到 python 2.7.13 时,我可以从 R 调用“import numpy”,但在连接到 3.5.3 时不能。

2)我已经找到了之前安装并卸载的所有 numpy 和 scipy。对于 python 2.7.13 和 python 3.5.3,我都有几个副本。使用 pip 和 pip3 重新安装并没有解决问题(为了安全起见,我事先重新启动了 R)。

从这两个帐户来看,这似乎是 R 包“rPython”的问题。您可以尝试 R 中较新的“网状”包,看看这是否更适合您。但是,当使用 reticulate 将 R 与 python 连接时,我无法让并行线程工作,不幸的是,这是我需要做的。然而,当使用“rPython”时,线程确实可以完美地工作,但我需要的包需要 python 3+。如果我能够解决它,我将继续排除故障并更新这篇文章。同时,给“网状”一个镜头,它是一个非常整洁的包。

编辑 我能够使用'reticulate'包从R中的python 3.5.3加载numpy。

EDIT2对于那些将来找到这篇文章的人,我能找到的唯一解决方案是使用带有 R 多线程的 python3 代码是用 system(python3 "path_to_python_script" arg1 arg2 arg3) 调用 python 文件

于 2017-08-01T17:18:08.860 回答