4

I have been trying to run some python code via R reticulate with no success. I tried creating a virtual environment and install two packages in it: numpy and a GitHub package called scrublet.

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)

Then I want to activate the environment and run code over it. When I run py_discover_config() I get output:

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

which seems to be as I want. The problem is that I don't seem to be able to actually use this environment. If I test weather numpy is available (py_numpy_available()) I get that not and when I try any import statement (either to one of the installed packages or even to something like os) R crashes with:

R Session Aborted. R encountered a fatal error. The session was terminated

I tried the different reticulate manuals (here and here) and different git issues or SO questions but couldn't still figure this out.

Gilad Green
  • 36,708
  • 7
  • 61
  • 95

1 Answers1

4

From the installation path you provide, it looks like you're using Windows.
If you refer to virtualenv doc :

Virtual environment functions are not supported on Windows (the use of conda environments is recommended on Windows).

Try:

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

conda_python(envname =  "r-scrublet")

The scrublet.git can be added by running from the r-scrublet environment root folder:

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

or directly from R:

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

provided that you apply this patch. To avoid the patch, you can probably to add \r-scrublets\Library\bin to system path.


For completeness of snippet, once setup is ready, specify it's use by:

use_miniconda("r-scrublet", required=T)
scrub <- import("scrublet")
Gilad Green
  • 36,708
  • 7
  • 61
  • 95
Waldi
  • 39,242
  • 6
  • 30
  • 78
  • @Gilad, see my edit to avoid installation from terminal. – Waldi Aug 03 '20 at 12:47
  • Thanks very much :) Was confusing myself with working on both unix and windows and loosing track of what was working and not in each. But now works nicely :) – Gilad Green Aug 04 '20 at 12:26