Импорт matplotlib с reticulate в R



Я только начал использовать сетчатый пакет в R,и я все еще получаю некоторые перегибы. В частности, импорт matplotlib идет не очень хорошо. Я пробовал два разных способа, с разными сообщениями об ошибках для каждого.



Во-первых, используя repl_python в интерактивной оболочке RStudio:



library(reticulate)
use_python('/home/craig/anaconda3/bin/python')
py_discover_config()
repl_python()
import matplotlib.pyplot as plt


Оболочка REPL Python, которая открывается, кажется, имеет правильную версию и все такое, но когда я пытаюсь импортировать matplotlib.pyplot, я вижу следующее:



ImportError: в /lib/x86_64 с-линукс-дистрибутив GNU/сайт libz.так.1: версия `ZLIB_1.2.9' не найден (требуется /домашний/Крейг/anaconda3/Либ/питон3.6/сайте-пакетов/библиотек matplotlib/../../.././libpng16.так.16)



Установка zlib (с помощью sudo apt-get install lib64z1-dev lib64z1), казалось, ничего не изменила. FWIW, import matplotlib работал просто отлично, пока мне не нужно pyplot.



Я также попытался сделать то же самое в документе R Markdown:



```{r}
library(reticulate)
py_discover_config()
```

```{python}
import matplotlib.pyplot as plt
```


На этот раз я увидел:



Ошибка в py_get_attr_impl(x, name, silent): AtributeError: модуль 'matplotlib' не имеет атрибута' pyplot ' вызовы:... $.питон.встроенный.объект - > py_get_attr - > py_get_attr_impl ->.Выполнение вызова остановлено



Есть идеи, что здесь может происходить?

Спасибо!



Обновление: Как я уже упоминал в комментариях, установка версии для разработчиков reticulate устраняет некоторые проблемы, но не все. Если я попытаюсь запустить этот Rmd:



```{r}
library(reticulate)
use_python('/home/craig/anaconda3/bin/python')
```

```{python}
import matplotlib.pyplot as plt
```


Я получаю следующие сообщения об ошибках:



Error in py_run_string_impl(code, local, convert) : 
ImportError: /home/craig/anaconda3/lib/python3.6/site-packages/PyQt5/../../../libxcb-dri3.so.0: undefined symbol: xcb_send_request_with_fds

Detailed traceback:
File "<string>", line 1, in <module>
File "/home/craig/anaconda3/lib/python3.6/site-packages/matplotlib/pyplot.py", line 116, in <module>
_backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
File "/home/craig/anaconda3/lib/python3.6/site-packages/matplotlib/backends/__init__.py", line 60, in pylab_setup
[backend_name], 0)
File "/home/craig/anaconda3/lib/python3.6/site-packages/matplotlib/backends/backend_qt5agg.py", line 16, in <module>
from .backend_qt5 import (
File "/home/craig/anaconda3/lib/python3.6/site-packages/matplotlib/backends/backend_qt5.py", line 18, in <module>
import matplotlib.backends.qt_editor.figureoptions as figureoptions
File "/home/craig/anaconda3/lib/python3.6/site-packages/matplotlib/backends/qt_editor/figureoptions.py", line 20, in <module>
Calls: <Anonymous> ... force -> py_run_string -> py_run_string_impl -> .Call
Execution halted


Когда я пытался гуглить текст ошибки, похожая ошибка с xcb, кажется, возникает в контексте, который, насколько я могу судить, не столь релевантен.

519   2  

2 ответов:

Я смог заставить вещи работать, изменив кодовый блок R Markdown на следующий:

```{r}
library(reticulate)
use_python('/usr/bin/python3')
```

```{python}
import matplotlib.pyplot as plt
```
Я до сих пор не совсем понимаю, почему, но кажется, что reticulate не очень хорошо играет с инсталляциями анаконды. Может быть, это как-то связано с тем, что анаконда была настроена на хорошую работу с интерактивным блокнотом Jupyter.

Я был в состоянии заставить его работать с моим стадион conda установить сим связывания файла стадион conda Либ в /lib/x86_64 с-Линукс-гну/.

ln -s -f /opt/miniconda/lib/libz.so.1 /lib/x86_64-linux-gnu/libz.so.1

Я заметил, что если я запускал python один с тем же импортом, он работал нормально. Похоже, что reticulate не "видит" conda lib в качестве источника для libz, но ищет в каталоге /lib/x86_64-linux-gnu/.

Python: 3.6
Conda: 4.5.1
ОС: Ubuntu 14.04.1 LTS

Comments

    Ничего не найдено.