无法使用rPython导入软件包

3
我在Mac OS上安装了umap-learn并尝试在r markdown文件中使用它,使用rPython的方式如下所述: http://blog.schochastics.net/post/using-umap-in-r-with-rpython/#fn1 。但是当我运行以下代码时:
```{r}
umap <- function(x,n_neighbors=10,min_dist=0.1,metric="euclidean"){
  x <- as.matrix(x)
  colnames(x) <- NULL
  rPython::python.exec( c( "def umap(data,n,mdist,metric):",
              "\timport umap" ,
              "\timport numpy",
              "\tembedding = umap.UMAP(n_neighbors=n,min_dist=mdist,metric=metric).fit_transform(data)",
              "\tres = embedding.tolist()",
              "\treturn res"))

  res <- rPython::python.call( "umap", x,n_neighbors,min_dist,metric)
  do.call("rbind",res)
}

data(iris)
res <- umap(iris[,1:4])
```

我收到了错误信息:

Error in python.exec(python.command) : No module named umap

看起来,Rstudio没能检测到umap。我通过conda list确认该程序包已安装:
umap-learn                0.2.3                    py36_0    conda-forge

我该如何解决这个问题?

更新

Python版本不正确,因此我添加了.Rprofile并将其指向正确的版本,但是错误仍然存在。

system("python --version")
Python 3.6.5 :: Anaconda, Inc.

更新

更详细的错误信息(堆栈跟踪):

 Error in python.exec(python.command) : No module named umap
 4.stop(ret$error.desc)
 3.python.exec(python.command)
 2.rPython::python.call("umap", x, n_neighbors, min_dist, metric)
 1.umap(iris[, 1:4])

不,我怎么能验证呢?如果错了再切换吗? - Nikita Vlasenko
1个回答

1

您需要确保在R中使用的Python中可用umap包,这通常不是默认的Anaconda安装。

您可以使用system("python --version")检查您的Python版本,并在需要时在cmd行中执行pip install umappip3 install umap等命令(以使用当前可用的Python); 或者您可以切换到Anaconda Python路径)。


只是想补充一下,以下线程帮助我切换到正确的Python版本:https://dev59.com/RZbfa4cB1Zd3GeqPqTQ_ - Nikita Vlasenko
我成功运行了 pip install umap,但是没有解决错误。 - Nikita Vlasenko
R版本是3.5.0 - Nikita Vlasenko
@NikitaVlasenko 谢谢。我现在明白了,我无法复制您的情况,因为我的Windows版本与您的macOS版本不同。好的,请问您能否通过R在Python中运行此代码吗?import sys 然后 print (sys.path) 我们想要验证它是否可以访问库文件夹。 - Hack-R
它明显在尝试使用Python 2.7,而不是正确的版本。因此,在Rstudio中,python版本是正确的,但rPython正在切换版本。 - Nikita Vlasenko
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接