我一直试图通过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遇到致命错误。会话已终止
答案 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")