Звоните Python от R с сетчатым пакетом - PullRequest
0 голосов
/ 13 февраля 2020

Я хочу выполнить скрипт Python в R. Я установил сетку и проверил, что версия Python правильно инициализирована в моем сеансе R.

py_config()

возвращает следующее

python:         C:/Users/username/AppData/Local/r-miniconda/envs/r-reticulate/python.exe
libpython:      C:/Users/username/AppData/Local/r-miniconda/envs/r-reticulate/python36.dll
pythonhome:     C:/Users/username/AppData/Local/r-miniconda/envs/r-reticulate
version:        3.6.10 |Anaconda, Inc.| (default, Jan  7 2020, 15:18:16) [MSC v.1916 64 bit (AMD64)]
Architecture:   64bit
numpy:          C:/Users/username/AppData/Local/r-miniconda/envs/r-reticulate/Lib/site-packages/numpy
numpy_version:  1.18.1

Теперь, когда я вызываю скрипт Python

py_run_file("PythonScript.py")

, я получаю следующую ошибку в R

Error in py_run_file_impl(file, local, convert) : 
  ModuleNotFoundError: No module named 'requests'

Я понимаю, что мне нужно установить запросы пакет, но как мне сделать это в указанной c Python версии, которую я инициализировал?

Ответы [ 2 ]

1 голос
/ 13 февраля 2020

Вы можете написать функцию, которая собирает недостающие пакеты и устанавливает их:

run_python_file <- function(python_file){
    a = try(reticulate::py_run_file(python_file),silent=TRUE)
    if(inherits(a,"try-error")& grepl("ModuleNotFoundError",a)){
        system(sprintf("python -m pip install %s",gsub(".* |\\W","",c(a))))
        run_python_file(python_file)
      }
    else a
   }
run_python_file("PythonScript.py")
0 голосов
/ 13 февраля 2020

Вам необходимо установить python модуль requests раньше.

Если вы установили python, вы должны установить pip вместе с ним. Вы можете установить модуль, запустив pip install requests в командной строке.

...