使用rPython导入numply与python 3.5

时间:2017-07-26 06:45:28

标签: numpy rpython

我的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,则导入numpy可以正常工作。如何使用python 3.5在rPython下成功导入numpy?

1 个答案:

答案 0 :(得分: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”同样允许我使用python 3.5.3连接R.当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中较新的“网状”包,看看这是否适合您。但是,当使用网状连接R与python连接时,我无法使并行线程工作,不幸的是我需要做的事情。然而,当使用'rPython'时,线程确实工作得很好,但我需要的包需要python 3+。如果我能够解决这个问题,我将继续进行故障排除并更新此帖子。在此期间,给'网状'一个镜头,它是一个非常整洁的包。

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

EDIT2 对于那些将来发现这篇文章的人来说,我可以找到使用来自R的多线程的python3代码的唯一解决方案是用系统调用python文件(python3“path_to_python_script”arg1 arg2 arg3 )