【问题标题】:Unable to use rPython or pythoninr to import python modules无法使用 rPython 或 pythoninr 导入 python 模块
【发布时间】:2018-05-04 07:21:49
【问题描述】:

当我尝试导入“pymc3”或“theano”等模块时,rPython 或 PythoninR 无法找到这些模块,即使我已经安装了它们。我正在使用 Ubuntu 16.04、R 3.4.2 和 python 3.5.2

这两个包似乎无法找到某个文件夹,但是在我使用以下命令将路径附加到包含我需要的所有包的 sys.path 后它不起作用:

pyExec("sys.path.append('/home/lijiakai/.local/lib/python3.5/site-packages')")

结果似乎也不错:

pyExec('import sys; print(sys.path)')

['', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu' , '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages', '.', '/home/lijiakai/.local/lib/python3.5/site-packages']

我导入了包:

pyExec('import pymc3')

然后收到如下错误:

Traceback (most recent call last):   File "<string>", line 1, in
<module> **ImportError** :  No module named 'pymc3' Error in
pyExec("import pymc3") :    An error has occured while executing
Python code. See traceback above.

完全让我发疯了......如果有人可以在这里帮助我,我真的很感激。 谢谢

【问题讨论】:

  • system("which python") 返回什么?
  • 是/usr/bin/python,但是我在bash中运行python时,版本是3.5.2,应该是对的
  • 什么:library(rPython) python.exec(c("import sys", "\n", "print(sys.version)")) 返回?我怀疑 rPython 使用的是另一个 Python 版本,而不是 3.5.2
  • 是的,这是真的,我在使用库时在 R 中得到了 python 2.7.10 (rPython) T_T

标签: python r


【解决方案1】:

如果你使用anaconda,你可能想转向包reticulate,你可以在其中指定要使用的python版本。

# install.packages("reticulate")
library(reticulate)
use_python("/anaconda/bin/python")

但是,根据我的经验,这比较慢。

否则,如果您使用“标准”Python,则可以从删除 rPython 开始:

remove.packages("rPython")

然后指定版本重新安装:

install.packages("rPython", configure.vars= "RPYTHON_PYTHON_VERSION=3.5")

这应该在您的机器上使用 Python_3.5,有关详细信息,请参阅 here

如果成功,你可以使用:

library(rPython)
python.exec(c("import sys", "\n", "print(sys.version)"))

【讨论】:

  • 谢谢你的帮助,但是我在安装包的时候指定了""RPYTHON_PYTHON_VERSION=3.5" 后还是得到了2.7.10的python版本,真是郁闷...
  • 你在使用 anaconda 吗?
猜你喜欢
  • 2013-07-21
  • 2018-10-14
  • 2013-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-14
  • 1970-01-01
相关资源
最近更新 更多