НУЛЕВАЯ проблема при использовании пакета reticulate в R / Python

#python #r #anaconda #reticulate

#python #r #anaconda #сетчатый

Вопрос:

Я начинаю использовать пакет reticulate, чтобы иметь возможность использовать python с R. Код на python действительно работает, но при попытке получить что-то из кода на R он возвращает NULL.

Я думаю, проблема в том, что python, который я на самом деле использую, установлен с Anaconda, а RStudio — нет. Я использую Ubuntu 18.04.

Я пробовал простые тестовые коды, но все, что я пробовал, возвращает NULL, например:

 x = 5
  
 py$x #Returns NULL
  

Вот как на самом деле выглядит мой код.

 library(reticulate)
  
 def main():
    string1 = "http://ine.es/jaxiT3/files/t/es/xlsx/"
    string2 = ".xlsx?nocab=1"

    lista = list()

    for i in range(2854,2910):
        url = string1   str(i)   string2

        if i != 2855   12 and i != 2855   32 and i != 2855   42 and i != 2855   43:
          lista.append(url)

if __name__ == "__main__":
    main()
  
 py$lista #It returns NULL instead the list
  

Он должен возвращать список / вектор с URL-адресами, я знаю, что есть способ выполнить тот же код с R, но я хотел использовать reticulate. Спасибо.

Комментарии:

1. Что reticulate::py_config() возвращает, это ожидаемый каталог python? У меня самого были некоторые проблемы с этим, удалось решить ее, указав reticulate на другую установку python: reticulate::use_python("/path/to/desired_python")

2. Результатом был путь anaconda, по которому я его установил (/home/alejandro /anaconda3/bin / python), в любом случае я указал с помощью py_config , и ошибка изменилась. Теперь появляется ошибка в py_get_attr_impl(x, name, silent) : ошибка атрибута: модуль ‘ _main_ ‘ не имеет атрибута ‘lista’ , когда явно определен lista. Еще раз спасибо.

3. Вы пробовали устанавливать reticulate::use_condaenv() ?

4. У меня это работает, спасибо 🙂

Ответ №1:

Можно использовать, reticulate::use_condaenv() как говорит djfinnoy в комментариях, для решения проблемы и использования среды conda.