无法使用reticulate :: use_virtualenv加载软件包

时间:2020-07-29 07:31:32

标签: r virtualenv reticulate

我一直试图通过R网状结构运行一些python代码,但没有成功。我尝试创建一个虚拟环境并在其中安装两个软件包:numpy和一个名为scrublet的GitHub软件包。

library(reticulate)
if(!"r-scrublet" %in% virtualenv_list()) {
  virtualenv_create("r-scrublet")
  virtualenv_install("r-scrublet", c("numpy","git+https://github.com/AllonKleinLab/scrublet.git"))
}
use_virtualenv(virtualenv = "r-scrublet", required = T)

然后,我想激活环境并在其上运行代码。当我运行py_discover_config()时,我得到输出:

python:         C:/Users/gilad/Documents/.virtualenvs/r-scrublet/Scripts/python.exe
libpython:      C:/Users/gilad/Documents/.virtualenvs/r-scrublet/Scripts/python36.dll
pythonhome:     C:/Users/gilad/Documents/.virtualenvs/r-scrublet
version:        3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)]
Architecture:   64bit
numpy:          C:/Users/gilad/Documents/.virtualenvs/r-scrublet/Lib/site-packages/numpy
numpy_version:  1.19.1

NOTE: Python version was forced by use_python function

这似乎是我想要的。问题是我似乎无法实际使用此环境。如果我测试了天气numpy是否可用(py_numpy_available()),我将无法使用,并且当我尝试任何import语句(对已安装的软件包之一甚至对os之类的东西)时,R崩溃与:

R会话已中止。 R遇到致命错误。会话已终止

我尝试了不同的网状手册(herehere)以及不同的git问题或SO问题,但仍然无法解决。

1 个答案:

答案 0 :(得分:1)

从您提供的安装路径来看,您似乎正在使用Windows。
如果您参考virtualenv doc

Windows不支持虚拟环境功能(在Windows上建议使用conda environments)。

尝试:

library(reticulate)
conda_create("r-scrublet")
conda_install(envname="r-scrublet", packages ="numpy","pip","git")

conda_python(envname =  "r-scrublet")

可以从r-scrublet环境根文件夹运行来添加scrublet.git:

Scripts\pip install git+https://github.com/AllonKleinLab/scrublet.git

或直接从R:

conda_install(envname='r-scrublet','git+https://github.com/AllonKleinLab/scrublet.git',pip=T)

前提是您应用了此patch。为了避免打补丁,您可以将\r-scrublets\Library\bin添加到系统路径。


为确保代码段的完整性,设置完成后,请指定其使用方式:

use_miniconda("r-scrublet", required=T)
scrub <- import("scrublet")